0

次のようなテーブルがあります。

ここに画像の説明を入力

これを取得するクエリの書き方

4

5 に答える 5

4

使用しているデータベース製品を指定しませんでしたが、どのデータベースでも CASE 式で集計関数を使用して結果を取得できるはずです。

select subject,
  sum(case when marks > 10 and marks <= 40 then 1 else 0 end) Range10_40,
  sum(case when marks > 40 and marks <= 60 then 1 else 0 end) Range40_60
from yt
group by subject;

デモで SQL Fiddle を参照してください

于 2013-06-12T12:11:31.860 に答える
3

このクエリを試してください

Mysql の場合

 SELECT 
    subject, 
    sum(if(marks between 10 and 40, 1, 0)) as '(10-40)',
    sum(if(marks between 40 and 60, 1, 0)) as '(40-60)'
 FROM 
    tbl
 GROUP BY 
    subject

SQL フィドル

于 2013-06-12T12:11:27.803 に答える
0

このようなものはうまくいくと思います...

SELECT t.`subject`,
    (SELECT COUNT(*) FROM `subject` as t2 WHERE t2.`range` BETWEEN (10 AND 40) AND t2.`subject` = t.`subject`) as `range1040`,
    (SELECT COUNT(*) FROM `subject` as t2 WHERE t2.`range` BETWEEN (40 AND 60) AND t2.`subject` = t.`subject`) as `range4060`
FROM `table` as t
GROUP BY t.`subject`
ORDER BY t.`subject`
于 2013-06-12T12:11:12.890 に答える