2

tableは 2 column、 Type 、 Age を持つ を持っていますが、次の例のような状態のため 5 列に表示したいと思います: | タイプ | 年齢 < 10 | 10歳<=年齢<20 | 年齢 > 20 |

2 しかないので、どうすればこれを達成できcolumnますか?

別のエイリアスで同じテーブルを選択しようとしましたが、実行時間が長く、うまくいきませんでした。

どんな助けでも大歓迎です。

4

2 に答える 2

3

これを試して:

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
于 2012-09-28T04:50:04.813 に答える
2

列の値として何が必要ですか? ブール値?

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 ...

于 2012-09-28T04:56:18.533 に答える