Pregunta Usar agrupar por en varias columnas


Entiendo el punto de GROUP BY x 

¿Pero cómo? GROUP BY x, y trabajo, y ¿qué significa?


747
2018-03-10 23:11


origen


Respuestas:


Group By X medio poner todos aquellos con el mismo valor para X en el grupo.

Group By X, Y medio poner todos aquellos con los mismos valores para X e Y en el grupo.

Para ilustrar usando un ejemplo, digamos que tenemos la siguiente tabla, para ver quién asiste a qué materia en una universidad:

Table: Subject_Selection

Subject   Semester   Attendee
---------------------------------
ITB001    1          John
ITB001    1          Bob
ITB001    1          Mickey
ITB001    2          Jenny
ITB001    2          James
MKB114    1          John
MKB114    1          Erica

Cuando usas un group by en la columna del asunto solamente; decir:

select Subject, Count(*)
from Subject_Selection
group by Subject

Obtendrás algo como:

Subject    Count
------------------------------
ITB001     5
MKB114     2

... porque hay 5 entradas para ITB001 y 2 para MKB114

Si tuviéramos que group by Dos columnas:

select Subject, Semester, Count(*)
from Subject_Selection
group by Subject, Semester

obtendríamos esto:

Subject    Semester   Count
------------------------------
ITB001     1          3
ITB001     2          2
MKB114     1          2

Esto es porque, cuando agrupamos por dos columnas, está diciendo "Agrúpelos para que todos aquellos con el mismo tema y el mismo semestre estén en el mismo grupo y luego calcule todas las funciones agregadas (Count, Sum, Average, etc.) para cada uno de esos grupos ". En este ejemplo, esto se demuestra por el hecho de que, cuando los contamos, hay Tres personas que hacen ITB001 en el semestre 1, y dos hacerlo en el semestre 2. Ambas personas que hacen MKB114 están en el semestre 1, por lo que no hay fila para el semestre 2 (ningún dato se ajusta al grupo "MKB114, Semestre 2")

Espero que tenga sentido.


1580
2018-03-10 23:24



La cláusula GROUP BY se usa junto con las funciones agregadas para agrupar el conjunto de resultados por una o más columnas. p.ej.:

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

Recuerde este orden:

1) SELECCIONAR (se usa para seleccionar datos de una base de datos)

2) FROM (la cláusula se usa para enumerar las tablas)

3) WHERE (la cláusula se usa para filtrar registros)

4) GROUP BY (la cláusula se puede usar en una instrucción SELECT para recopilar datos   en múltiples registros y agrupe los resultados por una o más columnas)

5) La cláusula HAVING (se usa en combinación con la cláusula GROUP BY para   restringe los grupos de filas devueltas solo a aquellos cuya condición   es verdad)

6) ORDER BY (la palabra clave se usa para ordenar el conjunto de resultados)

Puede usar todo esto si está usando funciones de agregado, y este es el orden en que deben configurarse; de ​​lo contrario, puede obtener un error.

Las funciones agregadas son:

MIN devuelve el valor más pequeño en una columna determinada

SUM devuelve la suma de los valores numéricos en una columna determinada

AVG devuelve el valor promedio de una columna determinada

COUNT devuelve el número total de valores en una columna determinada

COUNT (*) devuelve el número de filas en una tabla


18
2017-12-15 22:14