Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

usar doble group by

Estas en el tema de usar doble group by en el foro de SQL Server en Foros del Web. buenas a todos tengo la siguiente consulta... quiciera saber si existe alguna manera en una consulta de mostrar un top de vendedores(5,10,etc) pero no solo ...
  #1 (permalink)  
Antiguo 07/04/2012, 15:17
 
Fecha de Ingreso: abril-2012
Mensajes: 10
Antigüedad: 12 años, 7 meses
Puntos: 0
usar doble group by

buenas a todos tengo la siguiente consulta... quiciera saber si existe alguna manera en una consulta de mostrar un top de vendedores(5,10,etc) pero no solo eso si no en la misma consulta o en otra agrupar a los vendedores restantes y colocarlos en una sola fila bajo el alias de "Otros" algo asi:

Vendedor MontoVendido
Carlos 154200
Pedro 142500
Maria 120000

Otros 60000

en la fila otras esta el resto de vendedores que no estan en el top
  #2 (permalink)  
Antiguo 10/04/2012, 06:24
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: usar doble group by

Podrias hacer algo asi:

select top 10 vendedor, sum(monto) from tabla group by vendedor
union
select 'otros', sum(monto) from tabla where vendedor not in (select top 10 vendedor, sum(monto) from tabla group by vendedor)


Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 11/04/2012, 17:08
 
Fecha de Ingreso: abril-2012
Mensajes: 10
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: usar doble group by

Hola gracias por tomarte la molestia de contestar pero ahora me bota el siguiente error

"Sólo se puede especificar una expresión en la lista de selección cuando la subconsulta no se especifica con EXISTS."

podrias volver a darme una mano si no es muxa molestia
  #4 (permalink)  
Antiguo 16/04/2012, 08:09
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: usar doble group by

algunos ejemplos de tus datos??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 16/04/2012, 22:10
 
Fecha de Ingreso: abril-2012
Ubicación: Capital Federal
Mensajes: 283
Antigüedad: 12 años, 7 meses
Puntos: 15
Respuesta: usar doble group by

Traté de hacerlo pero se complica bastante, me parece que está lejos de usar Union!
  #6 (permalink)  
Antiguo 17/04/2012, 08:18
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: usar doble group by

Cita:
Iniciado por damimg Ver Mensaje
Traté de hacerlo pero se complica bastante, me parece que está lejos de usar Union!
como que no sale con union ;)


Código SQL:
Ver original
  1. CREATE TABLE #temp(
  2. vendedor VARCHAR(20),
  3. monto INT
  4. )
  5.  
  6. INSERT INTO #temp VALUES ('vendedor1',1000)
  7. INSERT INTO #temp VALUES ('vendedor2',2000)
  8. INSERT INTO #temp VALUES ('vendedor3',3000)
  9. INSERT INTO #temp VALUES ('vendedor4',4000)
  10. INSERT INTO #temp VALUES ('vendedor5',5000)
  11. INSERT INTO #temp VALUES ('vendedor6',6000)
  12. INSERT INTO #temp VALUES ('vendedor7',7000)
  13. INSERT INTO #temp VALUES ('vendedor8',8000)
  14. INSERT INTO #temp VALUES ('vendedor9',9000)
  15. INSERT INTO #temp VALUES ('vendedor10',10000)
  16. INSERT INTO #temp VALUES ('vendedor11',11000)
  17. INSERT INTO #temp VALUES ('vendedor12',12000)
  18. INSERT INTO #temp VALUES ('vendedor13',13000)
  19. INSERT INTO #temp VALUES ('vendedor14',14000)
  20. INSERT INTO #temp VALUES ('vendedor15',15000)
  21.  
  22.  
  23.  
  24. SELECT 'otros' vendedor, SUM(otros) monto FROM(
  25. SELECT CASE WHEN vendedor NOT IN (SELECT top 10 vendedor FROM #temp ORDER BY monto DESC) THEN SUM(monto) END AS otros FROM #temp
  26. GROUP BY vendedor) t1
  27. UNION
  28. SELECT * FROM
  29. (SELECT top 10 vendedor,monto FROM #temp ORDER BY monto DESC)t2

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: doble, group, usar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:24.