Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => Bases de Datos => Mensaje iniciado por: d91 en 9 Noviembre 2015, 13:31 PM

Título: ayuda con select y group by
Publicado por: d91 en 9 Noviembre 2015, 13:31 PM
hola a todos, estoy tratando seleccionar las ventas del dia en Oracle pero no me funciona si trato de mostrar la suma por cada vendedor en la clausula grupo by
Código (sql) [Seleccionar]

select T.nombreempleado from vendedor P JOIN cat_empleado T ON T.idempleado = P.empleado group by P.empleado

el problema esta al agregarle el group by y cuando quiero ver la suma por cada vendedor también me da problemas de esta forma
Código (sql) [Seleccionar]

select T.nombreempleado, sum(P.monto)total from vendedor P JOIN cat_empleado T ON T.idempleado = P.empleado group by P.empleado

y por ultimo necesitaría filtrar por fecha
Código (sql) [Seleccionar]

select T.nombreempleado sum(P.monto)total from vendedor P JOIN cat_empleado T ON T.idempleado = P.empleado where P.fecha = '09/11/2015' group by p.empleado

agradezco la orientancion que me puedan dar
Título: Re: ayuda con select y group by
Publicado por: 0roch1 en 9 Noviembre 2015, 17:39 PM
Esto debería de funcionar.

Código (sql) [Seleccionar]

SELECT T.nombreempleado, SUM(P.monto) AS total FROM vendedor AS P, cat_empleado AS T WHERE P.fecha='2015-11-09'
AND P.empleado=T.idempleado
GROUP BY P.empleado


Solo ten cuidado con el formato de la fecha, en mi consulta la estoy manejando como si fuera tipo DATE.

Título: Re: ayuda con select y group by
Publicado por: d91 en 10 Noviembre 2015, 02:32 AM
sigue con el error not group by expression
solo me funciona con este:
Código (sql) [Seleccionar]

select empleado, sum(monto) as total from vendedor group by empleado;

aunque necesito mostrar el nombre del empleado
Título: Re: ayuda con select y group by
Publicado por: d91 en 10 Noviembre 2015, 02:55 AM
al final lo logre hacer funcionar, la regla es que en el group by deben ir todas las columnas a mostrar excepto la columna que sumará valores
Código (sql) [Seleccionar]


select T.nombreempleado, sum(P.monto) as total
from vendedor P join cat_empleado T
on P.empleado = T.idempleado
where P.fecha = '09/11/2015'
group by T.nombreempleado order by total desc;
Título: Re: ayuda con select y group by
Publicado por: 0roch1 en 10 Noviembre 2015, 16:42 PM
Cita de: d91 en 10 Noviembre 2015, 02:55 AM
al final lo logre hacer funcionar, la regla es que en el group by deben ir todas las columnas a mostrar excepto la columna que sumará valores
Código (sql) [Seleccionar]


select T.nombreempleado, sum(P.monto) as total
from vendedor P join cat_empleado T
on P.empleado = T.idempleado
where P.fecha = '09/11/2015'
group by T.nombreempleado order by total desc;


Y si tienes dos empleados con diferente id (empleado) pero exactamente el mismo nombre?
Título: Re: ayuda con select y group by
Publicado por: d91 en 12 Noviembre 2015, 13:45 PM
yo pienso que primera hara la intersección
Código (sql) [Seleccionar]

FROM vendedor P JOIN cat_empleado T

ON P.empleado = T.idempleado



Título: Re: ayuda con select y group by
Publicado por: 0roch1 en 12 Noviembre 2015, 16:55 PM
Código (sql) [Seleccionar]

SELECT * FROM cat_empleado;

+------------+-----------------+
| idempleado | nombreempleado  |
+------------+-----------------+
|          1 | Juan Perez      |
|          2 | Pilar Alcantara |
|          3 | Juan Perez      |
+------------+-----------------+


Código (sql) [Seleccionar]

SELECT * FROM vendedor;

+----------+-------+------------+
| empleado | monto | fecha      |
+----------+-------+------------+
|        1 |  12.5 | 2015-11-09 |
|        1 |  15.2 | 2015-11-09 |
|        1 |   2.3 | 2015-11-08 |
|        2 |   5.1 | 2015-11-07 |
|        2 |   4.9 | 2015-11-09 |
|        3 |     3 | 2015-11-09 |
|        3 |     3 | 2015-11-09 |
+----------+-------+------------+


La consulta que propongo.
Código (sql) [Seleccionar]

SELECT T.idempleado, T.nombreempleado, SUM(P.monto) AS total FROM vendedor AS P, cat_empleado AS T WHERE P.fecha='09/11/2015'
AND P.empleado=T.idempleado
GROUP BY T.idempleado;

+------------+-----------------+-------+
| idempleado | nombreempleado  | total |
+------------+-----------------+-------+
|          1 | Juan Perez      |  27.7 |
|          2 | Pilar Alcantara |   4.9 |
|          3 | Juan Perez      |     6 |
+------------+-----------------+-------+


La consulta que propones.
Código (sql) [Seleccionar]

SELECT T.nombreempleado, SUM(P.monto) AS total
FROM vendedor P JOIN cat_empleado T
ON P.empleado = T.idempleado
WHERE P.fecha = '09/11/2015'
GROUP BY T.nombreempleado ORDER BY total DESC;

+-----------------+-------+
| nombreempleado  | total |
+-----------------+-------+
| Juan Perez      |  33.7 |
| Pilar Alcantara |   4.9 |
+-----------------+-------+


Cita de: d91 en 10 Noviembre 2015, 02:32 AM
sigue con el error not group by expression

Qué SMBD usas?
Título: Re: ayuda con select y group by
Publicado por: d91 en 18 Noviembre 2015, 16:28 PM
Oracle 11g
Título: Re: ayuda con select y group by
Publicado por: d91 en 18 Noviembre 2015, 16:50 PM
bueno creo que la respuesta a la pregunta es: seleccionar el id de los empleados para que distinga por id
Código (sql) [Seleccionar]

select t.id,t.nombre, sum(p.monto) as total
from vendedor p join empleado t on p.empleado = t.id
where p.fecha = sysdate
group by t.id, t.nombre order by total desc;