Foro de elhacker.net

Programación => 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
  1. SELECT T.nombreempleado FROM vendedor P JOIN cat_empleado T ON T.idempleado = P.empleado GROUP BY P.empleado
  2.  
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
  1. SELECT T.nombreempleado, SUM(P.monto)total FROM vendedor P JOIN cat_empleado T ON T.idempleado = P.empleado GROUP BY P.empleado
  2.  
y por ultimo necesitaría filtrar por fecha
Código
  1. 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
  2.  
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
  1. SELECT T.nombreempleado, SUM(P.monto) AS total FROM vendedor AS P, cat_empleado AS T WHERE P.fecha='2015-11-09'
  2. AND P.empleado=T.idempleado
  3. GROUP BY P.empleado
  4.  

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
  1. SELECT empleado, SUM(monto) AS total FROM vendedor GROUP BY empleado;
  2.  
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
  1.  
  2. SELECT T.nombreempleado, SUM(P.monto) AS total
  3. FROM vendedor P JOIN cat_empleado T
  4. ON P.empleado = T.idempleado
  5. WHERE P.fecha = '09/11/2015'
  6. GROUP BY T.nombreempleado ORDER BY total DESC;
  7.  


Título: Re: ayuda con select y group by
Publicado por: 0roch1 en 10 Noviembre 2015, 16:42 pm
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
  1.  
  2. SELECT T.nombreempleado, SUM(P.monto) AS total
  3. FROM vendedor P JOIN cat_empleado T
  4. ON P.empleado = T.idempleado
  5. WHERE P.fecha = '09/11/2015'
  6. GROUP BY T.nombreempleado ORDER BY total DESC;
  7.  

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
  1. FROM vendedor P JOIN cat_empleado T
  2.  
  3. ON P.empleado = T.idempleado
  4.  
  5.  
  6.  


Título: Re: ayuda con select y group by
Publicado por: 0roch1 en 12 Noviembre 2015, 16:55 pm
Código
  1. SELECT * FROM cat_empleado;
  2.  
  3. +------------+-----------------+
  4. | idempleado | nombreempleado  |
  5. +------------+-----------------+
  6. |          1 | Juan Perez      |
  7. |          2 | Pilar Alcantara |
  8. |          3 | Juan Perez      |
  9. +------------+-----------------+
  10.  

Código
  1. SELECT * FROM vendedor;
  2.  
  3. +----------+-------+------------+
  4. | empleado | monto | fecha      |
  5. +----------+-------+------------+
  6. |        1 |  12.5 | 2015-11-09 |
  7. |        1 |  15.2 | 2015-11-09 |
  8. |        1 |   2.3 | 2015-11-08 |
  9. |        2 |   5.1 | 2015-11-07 |
  10. |        2 |   4.9 | 2015-11-09 |
  11. |        3 |     3 | 2015-11-09 |
  12. |        3 |     3 | 2015-11-09 |
  13. +----------+-------+------------+
  14.  

La consulta que propongo.
Código
  1. SELECT T.idempleado, T.nombreempleado, SUM(P.monto) AS total FROM vendedor AS P, cat_empleado AS T WHERE P.fecha='09/11/2015'
  2. AND P.empleado=T.idempleado
  3. GROUP BY T.idempleado;
  4.  
  5. +------------+-----------------+-------+
  6. | idempleado | nombreempleado  | total |
  7. +------------+-----------------+-------+
  8. |          1 | Juan Perez      |  27.7 |
  9. |          2 | Pilar Alcantara |   4.9 |
  10. |          3 | Juan Perez      |     6 |
  11. +------------+-----------------+-------+
  12.  

La consulta que propones.
Código
  1. SELECT T.nombreempleado, SUM(P.monto) AS total
  2. FROM vendedor P JOIN cat_empleado T
  3. ON P.empleado = T.idempleado
  4. WHERE P.fecha = '09/11/2015'
  5. GROUP BY T.nombreempleado ORDER BY total DESC;
  6.  
  7. +-----------------+-------+
  8. | nombreempleado  | total |
  9. +-----------------+-------+
  10. | Juan Perez      |  33.7 |
  11. | Pilar Alcantara |   4.9 |
  12. +-----------------+-------+
  13.  

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
  1. SELECT t.id,t.nombre, SUM(p.monto) AS total
  2. FROM vendedor p JOIN empleado t ON p.empleado = t.id
  3. WHERE p.fecha = sysdate
  4. GROUP BY t.id, t.nombre ORDER BY total DESC;
  5.