5

私は周りを見回していましたが、答えが見つかりませんでした。同じフィールドの値に基づいてフィールド名として 2 つの値のグループを返すクエリが必要です

例私はテーブルを持っています

名前、値
名前1、2
名前1、2
名前1、3
名前1、4
名前2、2
名前2、2
名前2、3
名前2、4

ここで、値 2 と 3 を 1 つのグループに、値 4 を別のグループにカウントしてグループ化したいので、結果は次のようになります。

名前、GRP1_COUNT、GRP2_COUNT
名前1、3、1
名前2、3、1

私は試してみましたがJOINUNION運が悪かったので、助けていただければ幸いです

4

2 に答える 2

15

MySQL にはピボット関数がないため、集計関数とCASE式を使用してデータを変換する必要があります。このタイプの計算では、 または のいずれかを使用しCOUNTますSUM

select name,
  sum(case when value in (2,3) then 1 else 0 end) GRP1_COUNT,
  sum(case when value = 4 then 1 else 0 end) GRP2_COUNT
from yourtable
group by name

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

COUNTバージョン:

select name,
  count(case when value in (2,3) then VALUE end) GRP1_COUNT,
  count(case when value = 4 then VALUE end) GRP2_COUNT
from yourtable
group by name

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

于 2013-03-21T20:08:29.870 に答える
5

これを試して

SELECT
name,
sum(case when value=2 or value=3 then 1 else 0 end),
sum(case when value=4 then 1 else 0 end)
FROM YourTable
GROUP BY name
于 2013-03-21T20:08:18.147 に答える