MySQL(8.0.23)で取引テーブル(sample)から、指定商品の組合せを含む取引ID(t_id)のユニーク数カウントを試みています。
以前、こちらの質問をさせていただき、一つのアイテムの組み合わせ条件については解決していますが、「同アイテムを含む複数の組み合わせ条件」を個別でカウントする方法を探しています。
・取引テーブル(sample)
t_id | dtl_id | item_id | item_name | quantity |
---|---|---|---|---|
1 | 1 | 111 | apple | 1 |
1 | 2 | 222 | orange | 1 |
2 | 1 | 111 | apple | 1 |
2 | 2 | 333 | peach | 1 |
3 | 1 | 222 | orange | 1 |
3 | 2 | 333 | peach | 1 |
3 | 3 | 444 | grape | 1 |
4 | 1 | 222 | orange | 4 |
4 | 2 | 333 | peach | 4 |
4 | 3 | 444 | grape | 1 |
・カウント条件の組み合わせ
セットA: orangeとpeach
セットB: orangeとpeachとgrape
とした場合、
セットAのt_idカウント: 3 (t_id=4の3件)
セットBのt_idカウント: 2 (t_id=3と4の2件)
で集計するイメージです。
仮にセットAのみのカウントの場合は前回いただいた質問回答より、
SQL
1SELECT COUNT(*) 2FROM ( 3 SELECT t_id 4 FROM sample 5 WHERE item_id IN (222, 333) 6 GROUP BY t_id 7 HAVING COUNT(*) = 2 8) X
のように出せるかと思いますが、上記のようにセットが複数の条件且つ一つのt_id内で併売される場合に、上記クエリに何か追記で算出すべきか、もしくは別の方法を検討すべきかをご教示いただきたいです。
※セットAとBの例で、AはBからgrapeを抜いたもののため、WHERE句にgrape除外を加えれば・・とも思いましたが、併売(一つのt_id内でAとBの両方を含む取引)があることを考慮すると成立しないと分かり模索中です。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/07/12 05:37
2022/07/12 07:14
2022/07/12 08:14