2011-10-10 2 views
0

애드워즈 방문을 추적하면 클릭 사기가 많이 발생합니다.SELECT DISTINCT 데이터가 뚜렷하지만 필터링되지 않습니다.

로그가 너무 지나치게 많아서 1 시간 동안 2 번 방문하는 경우가 많습니다. timeip 두 개가 동일하므로 눈에 띄게됩니다. SQL로 변환하는 데 문제가 있습니다.

이것은 IP가 일치하고 시간이 일치 할 때 2 회 이상의 클릭을 반환합니다. 반복을 볼 여전히 중복을 제거하기 위해 시간과 IP에 의해

SELECT DISTINCT wmf24_statpress.time, count(ip) AS clicks, ip 
FROM wmf24_statpress 
WHERE urlrequested LIKE '%gclid=%' 
GROUP BY ip 
+0

Group By 절과 Distinct 키워드를 모두 사용하는 것은 중요하지 않습니다. 둘 중 하나를 사용하십시오. 이 경우, Count를 확보하려면 Group By가 필요하므로 Distinct 키워드를 덤프하십시오. – Thomas

+0

이것은 한 시간 전에 게시 된 (마감 된) 질문과 매우 비슷합니다. –

+1

이것은 실제 질문이 아닙니다. 입력 내용이 무엇이며 출력 내용 ** 및 출력 내용 (몇 가지 관련 스 니펫)을 기재 한 다음 ** 질문에 답할 수 있습니다. 그것은 귀하의 질의가 다소 비효율적이지만 정확해야합니다. 그리고 그 때문에 당신은 잘못된 대답을 얻고 있습니다. 투표를 종료합니다. – Johan

답변

1

그룹, 즉

SELECT wmf24_statpress.time, count(ip) AS clicks, ip 
FROM wmf24_statpress 
WHERE urlrequested LIKE '%gclid=%' 
GROUP BY wmf24_statpress.time, ip 
+1

'DISTINCT'는'group by -all-fields-selected-'의 줄임말입니다. 둘의 조합은 의미가 없습니다; 구별을 제거하면 쿼리는 정확하게 똑같은 속도로 출력됩니다. – Johan

+0

맞음 – Ryan

+0

아니요 이것이 작동하지 않습니다 – user988126

2

그냥 GROUP BY 절에 time를 추가하고 당신이 잘되어야 :

SELECT `time`, count(ip) AS clicks, ip 
FROM wmf24_statpress 
WHERE urlrequested LIKE '%gclid=%' 
GROUP BY `time`, ip 

또한 distinct 절도 필요하지 않습니다.

+0

정직하게 작동하지 않습니다 – user988126

+0

내 실수로 '시간'은 예약어입니다. 이제는 작동합니다 –

+0

@Adrian, 놀랍게도 'time'은 예약어가 아닙니다. http : //dev.mysql.com/doc/refman/5.5/en/reserved-words.html OP는 정확한 질문을하지 않았기 때문에 정답을 제시 할 수 없습니다. – Johan