アプリ版:「スタンプのみでお礼する」機能のリリースについて

▼以下のテーブルがあります
【テーブル名:売上】
|日付|お店|商品|
|01/01|東京|みかん|
|01/01|大阪|みかん|
|01/01|大阪|りんご|
|01/31|東京|みかん|

このテーブルから、一か月間で販売した商品種類数をお店ごとに抽出したいです。

▼ほしい抽出結果
|お店|商品(count)|
|東京|1|
|大阪|2|

以下のSQL分で上記の抽出結果になりますか?
ーーー
SELECT お店,count(商品)
FROM 売上
GROPE BY お店
ーーー

単純に商品レコード数を数えるのではなく、同一店舗で過去に売れた商品は数えたくありません。
例に挙げたテーブルでいうと、東京店では1/1と1/31にみかんを売っていますが、販売した商品種類数はみかんのみなので、東京:1としたいです。

今試すことができない状況なので、結果がわからないのですが、以下のSQL文だと単純にレコード数を数えてしまうので東京:2となる気がします。

恐らくdistinctを使って重複をカウントしないようにするのだと思いますが、東京のみかん売上と大阪のみかん売上を重複として除外してしまうことを回避する方法が思いつきません。
なにか良い方法をおしえてください。

A 回答 (2件)

SELECT お店,COUNT(DISTINCT 商品)


FROM 売上
GROUP BY お店
    • good
    • 0

東京:2になると思います。


distinctは行全て一致しないと除外されませんので、一度お店と商品をdistinctで重複を除外して、それをgroup byで集計することでやりたい事が出来ると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す