SQL - Busqueda en sql que muestre mas de un campo y con la sentencia count

 
Vista:
sin imagen de perfil
Val: 2
Ha aumentado su posición en 36 puestos en SQL (en relación al último mes)
Gráfica de SQL

Busqueda en sql que muestre mas de un campo y con la sentencia count

Publicado por Victor (2 intervenciones) el 18/03/2019 23:24:43
Hola a todos:
Lo que pasa es que me pide lo siguiente:

Mostrar a todos los empleados por rut y nombre y su cantidad de prestaciones de servicio.

Y para esto ocupo dos tablas las que son:

empleado (emp_rut, emp_nombre, emp_fecha_ing)
prestacion_servicio (pre_codigo, ser_codigo, emp_rut, veh_patente, pre_fecha)

Resulta que relaciono con un alias y el where y hago la siguiente relación:

1
2
3
4
SELECT e.emp_rut, e.emp_nombre, COUNT(*)
FROM empleado e, prestacion_servicio p
WHERE p.emp_rut = e.emp_rut
GROUP BY p.emp_rut;

y eso no me resulta, e incluso me sale este error

ERROR at line 1:
ORA-00979: not a GROUP BY expression

por lo cual no se como resolverlo, se agradece cualquier ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 109
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Busqueda en sql que muestre mas de un campo y con la sentencia count

Publicado por Rafael (111 intervenciones) el 19/03/2019 09:48:42
Hola, Victor:

Existe una regla en SQL ....

Cuando usas funciones de agregacion (COUNT, SUM, AVG, etc) todo lo que no esta agregado, tiene que estar agrupado.
De tal modo que tu query deberia funcionar asi:
1
2
3
4
SELECT e.emp_rut, e.emp_nombre, COUNT(*)
FROM empleado e, prestacion_servicio p
WHERE p.emp_rut = e.emp_rut
GROUP BY e.emp_rut, e,emp_nombre;


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Vega
Val: 187
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Busqueda en sql que muestre mas de un campo y con la sentencia count

Publicado por Vega (73 intervenciones) el 19/03/2019 10:07:55
Hola,
tu sentencia group es incorrecta.
debería ser:
group by e.emp_rut, e.emp_nombre

Si lo que quieres es agrupas sólo por emp_rut y seguir viendo información relacionada con el emp_nombre quizas necesitarás usar una cláusula de ventana. Mírate la sentencia OVER()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar