mysql - tabla - sql contar registros agrupados
cómo seleccionar, promediar y clasificar en la tabla mysql (2)
tengo una mesa en mySql como en esta imagen
y quiero escribir una consulta cuyo resultado se agrupará por LECCIÓN columna, y agregará nueva fila que es el valor promedio de la columna LECCIÓN y suma los valores de la columna CNT ....
para esta consulta yo uso este
utilizo esta consulta pero da resultado como en la imagen 3 y no puedo ordenar por PERC en este caso
select no, STUD_ID,CLASS,LESSON, AVG(PERC) as PERC,SUM(CNT) as CNT from t_lesson where LESSON=''CHEM'' group by CLASS
union all
select no,STUD_ID,CLASS,''AVERAGE'' as LESSON, AVG(PERC) as PERC, SUM(CNT) as CNT from t_lesson where LESSON=''CHEM'' group by LESSON
no sé si estás buscando algo como esto:
SELECT fields_list, (field_to_modify + (SELECT AVG(average_field) FROM table2)) AS order_field
FROM table1
WHERE your_conditions
ORDER BY order_field;
Parece que está seleccionando todas las filas donde la lesson
es CHEM
, y luego quiere una fila adicional con el promedio del porcentaje. Qué tal si:
select *
from (
-- this part gets all the "CHEM" rows
select *
from <your_table_name>
where lesson = "CHEM"
union
-- this parts selects the aggregate row
select
NULL as `no`,
NULL as `stud_id`,
NULL as `class`,
"average" as `lesson`,
avg(percentage) as `perc`,
sum(count) as `cnt`
from <your_table_name>
where lesson = "CHEM"
) q
order by `perc` desc;
Tenga en cuenta que la clasificación es realizada por la consulta externa.