数値列 myint を持つテーブル mytable があります。
10 を超える、8 を超えるが 10 を下回る、5 を超えるが 8 を下回る行数を取得し、結果テーブルに次のように表示します。
above 10 | above 8 below 10 | above 5 below 8
27 | 17 | 300
を使用してそれらを垂直にできますunion all
。それらを水平にするために結合を使用する必要がありますか?
数値列 myint を持つテーブル mytable があります。
10 を超える、8 を超えるが 10 を下回る、5 を超えるが 8 を下回る行数を取得し、結果テーブルに次のように表示します。
above 10 | above 8 below 10 | above 5 below 8
27 | 17 | 300
を使用してそれらを垂直にできますunion all
。それらを水平にするために結合を使用する必要がありますか?
SELECT
SUM (CASE WHEN myint > 10 THEN 1 ELSE 0 END) AS 'above 10',
SUM (CASE WHEN myint BETWEEN 8 AND 9 THEN 1 ELSE 0 END) AS 'above 8 below 10',
SUM (CASE WHEN myint BETWEEN 5 AND 7 THEN 1 ELSE 0 END) AS 'above 5 below 8'
FROM mytable
上限または下限を含める場合は、またはに変更<
します<=
>
>=
select
(select count(*) from myTable where myint > 10) as "above 10",
(select count(*) from myTable where myint > 8 and myint < 10) as "above 8 below 10",
(select count(*) from myTable where myint > 5 and myint <8) as "above 5 below 8"
from myTable
これを試して:
SELECT
SUM(CASE WHEN myInt > 10 THEN 1 ELSE 0 END) AS '>10',
SUM(CASE WHEN myInt > 8 AND myInt < 10 THEN 1 ELSE 0 END) AS '(8-10)',
SUM(CASE WHEN myInt > 5 AND myInt < 8 THEN 1 ELSE 0 END) AS '(5-8)'
from mytable
これがおそらく最速の方法です。