2

私はデータベーステーブルを持っていますcampaign_datacustomer_idキャンペーンのどこで料金に違いがあるかを選択する必要があります。MySQLクエリでそれを行うにはどうすればよいですか。ここにいくつかのサンプルデータがあります。

SQL フィドル スキーマ

| CAMPAIGN_ID | CUSTOMER_ID |    CAMPAIGN_NAME | TARIFF |
---------------------------------------------------------
|           1 |           1 |         Richmond |    100 |
|           2 |           1 | Sutton Coldfield |     75 |
|           3 |           1 |           Putney |    100 |
|           4 |           1 |     Kentish Town |    100 |
|           5 |           1 |           Woking |    100 |
|           6 |           2 |         Chiswick |     90 |
|           7 |           2 |           Ealing |    100 |
|           8 |           2 |           Camden |    100 |
|           9 |           3 |          Croydon |     75 |
|          10 |           3 |         Croydon1 |    100 |
|          11 |           3 |          Archway |    100 |
|          12 |           4 |          Ealing0 |    100 |
|          13 |           4 |         Ealing01 |    100 |
|          14 |           4 |         Ealing02 |    100 |
|          15 |           4 |        Chingford |    100 |
|          16 |           4 |      chingford01 |    100 |

ご覧のとおり、顧客 ID 1 と 3 には異なる関税が設定されています。同じ料金のキャンペーンがあるため、それらを選択して顧客 ID 4 のままにします。

望ましい出力

| CUSTOMER_ID |
---------------
|           1 |
|           2 |
|           3 |

明確にするために、顧客 1 には 5 つのレコードがあることがわかります。彼の5つのレコードで料金が同じ(100)の場合は避けたいのですが、4つのレコードが100で1つが75のように料金がそれほど高くない場合は、選択したいと思います。

4

3 に答える 3

1

あなたはこれを探しているかもしれません

SELECT customer_id
FROM campaign_data 
GROUP BY customer_id 
HAVING count(DISTINCT tariff) > 1

http://sqlfiddle.com/#!2/48b6e/31

于 2013-05-02T11:07:24.107 に答える