私table
は 2 column
、 Type 、 Age を持つ を持っていますが、次の例のような状態のため 5 列に表示したいと思います: | タイプ | 年齢 < 10 | 10歳<=年齢<20 | 年齢 > 20 |
2 しかないので、どうすればこれを達成できcolumn
ますか?
別のエイリアスで同じテーブルを選択しようとしましたが、実行時間が長く、うまくいきませんでした。
どんな助けでも大歓迎です。
これを試して:
CASEステートメントを使用する
select TYPE,
case when Age < 10 then age end as ' Age<10',
case when Age between 10 and 20 then age end as ' Age 10-20',
case when Age > 20 then age end as ' Age>20'
from
your_table
列の値として何が必要ですか? ブール値?
SELECT type,
age < 10 AS "Age < 10",
age >= 10 AND age < 20 AS "10 <= Age < 20",
age > 20 AS "Age > 20"
FROM table_name;
わかりました、どうやら集計が必要なようです(各年齢層の数の数)
SELECT type,
(SELECT COUNT(*) FROM table_name AS t2 WHERE age < 10 AND t2.type = type) AS "Age < 10",
(SELECT COUNT(*) FROM table_name AS t2 WHERE age >= 10 AND age < 20 AND t2.type = type) AS "10 <= Age < 20)"
...and so on...
FROM table_name
それはあなたが遅すぎると思った解決策と同じだと思いますか? 私は別のより良いものを考えることはできません. age の条件付きインデックスは役に立ちますが、MySQL は条件付きインデックスをサポートしていません。PostgreSQLでは、次のことができますCREATE INDEX ON table_name (age) WHERE age < 10 ...