No.2ベストアンサー
- 回答日時:
「今までに一度も購入したことがない人」であれば商品購入テーブルにいないので別ですが、今回は最低一回は購入した人が対象になっているので、差分をとるようなクエリが適当だとは思えないです。
いろいろ方法はあるでしょうけど、とりあえず購入月は数字で入っているとして考え方を示しますと、以下のようになります。
SELECT
顧客ID,
商品コード
FROM 商品購入テーブル
WHERE 顧客都道府県 IN ('東京都','神奈川県')
AND 顧客ID IN (SELECT 顧客ID FROM 商品購入テーブル WHERE 購入月=5)
AND 顧客ID IN (SELECT 顧客ID FROM 商品購入テーブル WHERE 購入月=6)
AND 顧客ID NOT IN (SELECT 顧客ID FROM 商品購入テーブル WHERE 購入月 IN (7,8))
しかし、これはさすがに効率がよくないので、
「5月と6月に購入してて、7月と8月に購入していない]の部分はGROUP BYを使って一括で条件指定するのも手です。
SELECT
顧客ID,
商品コード
FROM 商品購入テーブル
WHERE 顧客都道府県 IN ('東京都','神奈川県')
AND 顧客ID IN
(SELECT 顧客ID
FROM 商品購入テーブル
WHERE 購入月 BETWEEN 5 AND 8
GROUP BY 顧客ID
HAVING SUM(CASE WHEN 購入月=5 THEN 1 ELSE 0 END)>0
AND SUM(CASE WHEN 購入月=6 THEN 1 ELSE 0 END)>0
AND SUM(CASE WHEN 購入月 IN (7,8) THEN 1 ELSE 0 END)=0)
回答ありがとうございます。
2つ目の方法で、うまくデータを抽出することができました。
1つ目の方法も、今後の参考に
いろいろ試してみたいと思います。
No.1
- 回答日時:
select 必要なフィールド
from 商品購入テーブル
where 5月に購入 and 6月に購入 and 7月に未購入 and 8月に未購入
and (東京在住 or 神奈川在住)
ってな感じでしょうか?
この回答への補足
さっそくの回答ありがとうございます。
こちらの説明不足と無知のため、さらに質問なのですが。。。
この商品購入テーブルは、購入した履歴が溜まっていくものなので、
未購入履歴がありません。
(顧客IDは持っているが、顧客IDの管理は別テーブルになります。)
なので、5月と6月に購入している人たちと、7月と8月に購入している人たちを比べて、5月と6月しか購入していない人を抽出するというSQLの書き方を教えていただければと思います。
今回教えていただいた方法がそれを満たしているのかもしれませんが、
未購入者の出し方が分からないため、教えていただければと思います。
何卒よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- その他(データベース) accessについて 2 2022/05/31 16:58
- Excel(エクセル) 【詳しい方教えて下さい】EXCEL条件に一致する値の複数抽出 9 2022/04/29 10:56
- その他(開発・運用・管理) マイクロソフト製品のライセンス販売で困ってます 1 2022/06/30 19:52
- Visual Basic(VBA) 【VBA】指定した検索条件に一致したら別シートに転記したい 2 2022/03/23 16:14
- Excel(エクセル) 【Excel】住所に郵便番号を付記する方法 3 2022/05/07 17:15
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- ラクマ(楽天オークション) ラクマで商品が届かない 2 2022/08/25 07:53
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access VBAでクエリーのレコー...
-
ACCESS で マクロの中でフィ...
-
Access IF文でテーブルに存在し...
-
ワードで保存するファイル名の...
-
Access2000 単票フォーム上の...
-
Access 新規入力画面にするコー...
-
Accessで名寄せグループの関係...
-
Excel 2019 のピボットテーブル...
-
Oracle 2つのDate型の値の差を...
-
エクセルVBAで5行目からオート...
-
「直需」の意味を教えてください
-
Accessでテーブル名やクエリ名...
-
Accessのクエリでデータの入力...
-
変数が選択リストにありません
-
FROM の中で CASE を使えるでし...
-
Accessファイルを作成者以外は...
-
ACCESS2000「定義されているフ...
-
APN設定について教えていただけ...
-
Accessにてリンクテーブルの削...
-
Access テキスト型に対する指定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access IF文でテーブルに存在し...
-
Access VBAでクエリーのレコー...
-
データベースの1要素に複数デー...
-
ワードでの単純作業の効率化に...
-
ACCESS2003 Aアクロバットを介...
-
Access フォームのデータがテー...
-
Accessデータベースで行と列を...
-
ワードで保存するファイル名の...
-
Access 既に開いているフォー...
-
ACCESS で マクロの中でフィ...
-
Accessで名寄せグループの関係...
-
顧客IDを入力すると顧客名や住...
-
ADOでレコードを閉じるタイミン...
-
文字化け、記号の含まれるフィ...
-
Access クロス集計クエリについて
-
Access 縦(行)のデータを横(列)...
-
シングルクォーテーションとダ...
-
テーブル1 2 3 の結合
-
Access レコードロックについて...
-
Accessフォームからのデータ登...
おすすめ情報