Вопрос по mysql – как выбрать, усреднить и отсортировать в таблице MySQL

-1

у меня есть таблица в MySql, как на этой картинке
enter image description here

и я хочу написать запрос, результат которого будет сгруппирован по столбцу LESSON, и добавить новую строку, которая является средним значением столбца LESSON и суммой значений столбца CNT ....
для этого запроса я использую этот

enter image description here

Я использую этот запрос, но он дает результат, как на рисунке 3, и я не могу отсортировать по PERC в этом случае

<code>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
</code>

enter image description here

что вы пробовали? Taryn♦
Какие поля вы группируете? hjpotter92
УРОК............. namco
@namco Ты слишком сложен без хорошего объяснения, пожалуйста, объясни это правильно. Ankit Sharma
с моим худшим английским, поэтому я попытался сделать это с фотографиями :) namco

Ваш Ответ

2   ответа
-1

SELECT fields_list, (field_to_modify + (SELECT AVG(average_field) FROM table2)) AS order_field 
  FROM table1
WHERE your_conditions
  ORDER BY order_field;
0

lesson являетсяCHEM, а затем вы хотите дополнительный ряд со средним значением percantage. Как насчет:

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;

Обратите внимание, что сортировка выполняется внешним запросом.

Похожие вопросы