前提・実現したいこと
distinctでcountした要素同士をクロス集計したい
顧客ID | 商品 | 頻度ランク | 価格ランク |
---|---|---|---|
0001 | 卵 | A | C |
0001 | コーヒー | A | C |
0001 | 豆腐 | A | C |
0002 | 卵 | C | B |
0002 | コーヒー | C | B |
0002 | 豆腐 | C | B |
0003 | 卵 | B | A |
0003 | コーヒー | B | A |
0003 | 豆腐 | B | A |
上記のような集計用のテーブルを顧客IDでdistinctして件数を頻度ランクと価格ランクでクロス集計したいと考えています。
各顧客IDに対して頻度ランクと価格ランクは同じ値が入っています。(集計用にあとから顧客ID単位で更新したため)
(上記の例では顧客ID0001は3レコードありますが、頻度ランクA、価格ランクBという値は同じものが入ってます。)
イメージとしては下記のような出力をしたいです。
頻度ランクA | 頻度ランクB | 頻度ランクC | |
---|---|---|---|
価格ランクA | 0 | 1 | 0 |
価格ランクB | 0 | 0 | 1 |
価格ランクC | 1 | 0 | 0 |
試したこと
select 頻度ランク,count(distinct 顧客id) from テーブル group by 頻度ランク select 価格ランク,count(distinct 顧客id) from テーブル group by 価格ランク
片方の要素であれば、上記のsqlでカウントできるのですが、双方をクロス集計させる方法がわかりません。
環境
Macローカルpostgresql(pgadmin)
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー