2013-05-02 2 views
2

데이터베이스 테이블 campaign_data이 있습니다. 캠페인에서 관세에 차이가있는 customer_id을 선택해야합니다. MySQL 쿼리를 사용하여 어떻게 할 수 있습니까? 다음은 몇 가지 샘플 데이터입니다. SELECT 레코드 특정 열의 행이 다른 경우

| 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 | 

SQL Fiddle Schema

이제 고객 ID 1 볼 수 있으며, 3 가지 관세를 가지고있다. 동일한 관세를 가진 캠페인이 있기 때문에 고객 ID 4를 선택하고 싶습니다.

원하는 출력

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

clearification를 들어 고객 1 5 개 레코드가 볼 수 있습니다. 그의 5 개 기록에서 관세가 동일하다면 (100) 피하고 싶습니다. 그러나 관세가 4 개 레코드가 100 개이고 75 개가 75 개가 아닌 경우 선택하고 싶습니다.

답변

5
SELECT customer_id, count(DISTINCT tariff) as tariffs 
FROM campaign_data 
GROUP BY customer_id 
HAVING tariffs > 1 
+0

영리한 비트 주셔서 감사합니다! –

1
select 
    customer_id, 
    tariff 
from campaign_data 
group by customer_id 
having sum(tariff)/count(tariff) <> tariff; 
+0

감사 @Yordi을 찾고! 그러나 철자 실수가있었습니다! –

+0

이것은 틀리다 :) 나는 그것에 대해 생각하지만 그 잘못,이 관세는 어떨까요? 100,99,101? 그것은 동등한 관세가 될 것입니다 :) –

+0

옙 참, 네 말이 맞아! 그건 잘못 됐어 ! – Yordi

1

당신이 나에게 좋은 학습을 준이 어쩌면

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

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

관련 문제