SQL: ¿Cómo uso group by y order by together?

TABLA 1 :

TABLA 2 :

Para obtener las columnas ‘agent_code’ y ‘agent_name’ de la tabla ‘agents’ y la suma de la columna ‘advance_amount’ de la tabla ‘orders’ después de una unión, con las siguientes condiciones:

1. ‘agent_code’ de ‘agents’ y ‘orders’ deben ser iguales,

2. la misma combinación de ‘agent_code’ y ‘agent_name’ de la tabla ‘agents’ debe estar dentro de un grupo,

3. ‘agent_code’ de la tabla ‘agents’ debe organizarse en un orden, el valor predeterminado es el orden ascendente,

DECLARACIÓN DE SQL PARA ALCANZAR ESTE USIGN Group-By y Order-By

  SELECT agentes.agent_code, agents.agent_name,  
 SUMA (orders.advance_amount)  
 DE agentes, pedidos  
 DONDE agents.agent_code = orders.agent_code  
 GROUP BY agents.agent_code, agents.agent_name  
 ORDENAR por agents.agent_code;

SALIDA: –

  AGENT_CODE AGENT_NAME SUM (ORDERS.ADVANCE_AMOUNT) ----------------------- A001 Subbarao 200
 A002 Mukesh 3500
 A003 Alex 1000
 A004 Ivan 2100
 A005 Anderson 3100
 A006 McDen 600
 A007 Ramasundar 500
 A008 Alford 3300
 A009 Benjamin 100
 A010 Santakumar 3700
 A011 Ravi Kumar 900
 A012 Lucida 450

No estoy seguro de por qué, pero Quora me notificó que respondiera esto. Parece que la mayoría de la gente lo tiene cubierto para usted, pero he creado ejemplos para usted en SQL Fiddle (ya que espero que estos ejemplos puedan ayudarlo a probar su trabajo rápidamente y tal vez inspiren a otros a responder este tipo de preguntas con ejemplos similares):

http://sqlfiddle.com/#!9/c6aaf0/3

Su único problema (suponiendo que MySQL) fue que “dec” debería haber sido “desc”. (Evitar la palabra “número” como un alias también es una buena idea como lo menciona Andy).

Construí un esquema de muestra y ejecuté algunos SQL para usted. A continuación se muestra el código SQL que se ejecutó en el ejemplo en sqlfiddle.com.

-- notice that "dec" was changed to "desc" SELECT beerBrewery, COUNT(*) as number FROM uniqueBeers WHERE userID=3 GROUP BY beerBrewery ORDER BY number desc; -- this shows that order by did in fact make a difference since result set is ordered ascending by default with group by SELECT beerBrewery, COUNT(*) as number FROM uniqueBeers WHERE userID=3 GROUP BY beerBrewery; -- this is the original sql (error is with "dec") SELECT beerBrewery, COUNT(*) as number FROM uniqueBeers WHERE userID=3 GROUP BY beerBrewery ORDER BY number dec; 

¡Espero que esto ayude!

Hay dos problemas con su SQL:

“número” es una palabra reservada en SQL, por lo que debe elegir un nombre diferente o ponerlo entre comillas
Creo que te refieres a “desc” en lugar de “dec” en tu cláusula de orden

Así que prueba esto:

 SELECT beerBrewery, COUNT(*) as "number" FROM uniqueBeers WHERE userID=3 GROUP BY beerBrewery ORDER BY "number" desc; 

GROUP BY y ORDER BY se pueden usar en la misma consulta y NO se requiere que sean la misma columna. GROUP BY controla la forma en que se organizan los datos para sumarización. ORDER BY simplemente ordena las filas del resultado. Lo siguiente es legal:

  SELECCIONE EL DEPARTAMENTO, AVG (SALARIO) COMO AVG
 DE EMPLEADO
 GRUPO POR DEPARTAMENTO
 ORDEN POR AVG desc

debe reemplazar dec con desc en la última línea

La cláusula “Agrupar por” se usa para obtener el valor agregado (ejemplo: conteo de, suma de) en una o más columnas con referencia a una columna distinta en una tabla. La cláusula “Ordenar por” se utiliza para ordenar las filas resultantes en el orden de la columna o columnas especificadas.

“Agrupar por” y “Ordenar por” se pueden usar juntos en SQL como se muestra en el ejemplo: SELECCIONAR deptno, suma (sal + comm) DES de emp GRUPO POR deptno ORDENAR POR deptno;

Esto enumerará el costo total del salario y la comisión para cada departamento con la lista ordenada por número de departamento. El ejemplo supone que tanto “sal” como “comm” tienen valores en cada fila (valores no NULL).

EDITAR: Después de publicar mi respuesta, me di cuenta de que esta pregunta tiene al menos 3 años. ¡No sé por qué recibí una notificación de respuesta!

esta respuesta se aplica al servidor Microsoft SQL, pero el nombre de columna que tiene para su columna de conteo no se puede usar para hacer referencia a la columna.

Entonces el orden por debería repetir la función de conteo:

Agrupar por cervecería

Ordenar por conteo (*);

Sin embargo, para el rendimiento, el recuento (1) o el recuento de la clave principal suele ser más rápido y más confiable.

Avísame si aún tienes problemas

GROUP BY y ORDER BY se pueden usar en la misma consulta y NO se requiere que sean la misma columna. GROUP BY controla la forma en que se organizan los datos para sumarización. ORDER BY simplemente ordena las filas del resultado.

SELECCIONE EL DEPARTAMENTO, AVG (SALARIO) COMO AVG

DE EMPLEADO

GRUPO POR DEPARTAMENTO

ORDEN POR AVG

Desc no Dec

O algunas bases de datos no permiten expresiones en orden por:
Ordenar por conteo (*) desc

Verifique que ese número no sea una palabra reservada y póngalo como el nombre de la columna entre comillas

[código]

SELECCIONE cerveza Cervecería,
COUNT (*) como ‘total’ DE uniqueBeers WHERE userID = 3
GRUPO POR CERVEZA
ORDER BY ‘total’ dec; [/ code]

Asegúrese de que su tabla exista, ¡debería funcionar si el nombre de la tabla y los nombres de las columnas son correctos!
Cual es el error? Adjunte captura de pantalla.
¿Para qué proveedor de SQL? Quiero decir, ¿Oracle, Microsoft?

Acabo de probar para MS-SQL, funcionó.

Creo que sql usa desc como la palabra clave no dec.
Cambie ORDER BY number dec a ORDER BY number desc y vuelva a ejecutar la consulta.
Avísame si llega la salida

SELECT beerBrewery,

COUNT(*) as number FROM uniqueBeers WHERE userID=3

GROUP BY beerBrewery

ORDER BY number 2;

-- 2 means 2 variable in the query

  • parece que tienes un error tipográfico … desc .. no dec

Otra forma podría ser usar el número col
p.ej:

  seleccione '1' como col1,
                      contar ('2') como col2 desde dual 
                  agrupar por 1 
                  ordenar por 2;

¿Has probado “ordenar por número desc;” ?

Utilice ORDER BY para agregar la consulta de la manera que desee. Una vez hecho esto, ¿desea ver primero los países con las ventas más altas o los más bajos? Luego puede elegir ORDER BY y los campos de la consulta. Estos pueden ser los nombres o los valores agregados. Asegúrese de que la cláusula ORDER BY sea la última.