-1

この写真のようにmySqlにテーブルがあります
ここに画像の説明を入力

結果がLESSON列でグループ化されるクエリを作成し、LESSON列の平均値である新しい行を追加し、CNT列の値を合計
したい....このクエリでは、これを使用します

ここに画像の説明を入力

私はこのクエリを使用しますが、写真3のような結果が得られ、この場合はPERCでソートできません

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

ここに画像の説明を入力

4

2 に答える 2

0

lessonが であるすべての行を選択しているように見えますがCHEM、パーカンテージの平均を含む追加の行が必要です。どうですか:

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;

ソートは外側のクエリによって実行されることに注意してください。

于 2012-04-12T13:02:07.600 に答える
-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;
于 2012-04-12T12:03:12.253 に答える