Agrupaciones, sentencia group by de Oracle

Saludos a todos,

Quiesiera saber si en oracle se puede hacer un agrupamiento de un campo de una lista sin tener que agregar la lista completa, por ejemplo:

 

select nombre, direccion, depatamento, salario from empleados

 

Quieres decir hacer algo como esto?

select nombre, direccion, departamento, salario 
from empleados 
group by nombre

No se puede porque el group by te hace una agrupación por los campos que le indicas, y el resultado es de un sólo registro por agrupación. Si tu agrupas por nombre, y un mismo nombre tiene más de una dirección no puedes mostrarlo todo en el mismo registro. Todo lo que puedes mostrar han de ser datos agregados de los registros que componen la agrupación.

 

En respuesta a por Carlos

Saludos Carlos,

A lo que me refiero es a la posibilidad de hacer un group by solo por uno de los campos contenidos en la sentencia select, en el caso de sql/server sise puede hacer, por ejemplo la sentencia siguiente en oracle:

 select id_persona, identificacion,nombre_completo,tipo_persona

 

from cl_personas

group

by tipo_persona

esta sentencia me presenta el siguiente error en oracle :  ORA- 00979: Not a group by expression. Pero en SQL/Server si se puede hacer. Hay alguna forma de hacerlo en Oracle..?

En respuesta a por Yamil

Entonces he entendido bien lo que preguntabas, y mi respuesta anterior es válida.

Lo que no me cuadra es que me digas que en SQL Server esta sentencia te funciona, ya que debería darte un error parecido porque estás agrupando registros a un nivel (tipo_persona) e intentas sacar datos de un nivel más detallado (al pedir identificacion y nombre_completo), cuando de estos niveles sólo puedes obtener datos a nivel agregado con operaciones como COUNT, MIN, MAX, SUM, etc.

El funcionamiento general de las agrupaciones con GROUP BY es muy similar en casi todos los motores de bases de datos relacionales, ya que viene marcado por el estandar SQL. Tiene que haber alguna diferencia con la sentencia que has ejecutado en SQL Server para que en una BD te falle y en la otra no.