2011-09-07 21 views
0

我有一張表,用於存儲每次發送給其他網站的點擊。它包含發送點擊的網站的ID,點擊的日期時間,點擊的IP地址和IP地址來自的區域(IE:美國,加拿大,英國等)在MYSQL中使用Group By,而在另一列上使用不同的列表

當想看看有多少點擊我已經發送到一個網站,每個區域爲我用像這樣的查詢當天...

SELECT `clicks_region`, COUNT(*) as TOTAL 
FROM `clicks` 
WHERE `clicks_to_websites_id` = '1' 
AND DATE(`clicks_date`) = DATE('2011-08-30') 
GROUP BY `clicks_region` 

現在我想要做同樣的查詢,但限制它使一個IP會每天只計數一次

我的第一個想法是做這樣的事情...

SELECT `clicks_region`, COUNT(*) as TOTAL 
FROM `clicks` 
WHERE `clicks_to_websites_id` = '1' 
AND DATE(`clicks_date`) = DATE('2011-08-30') 
GROUP BY `clicks_region` 
HAVING DISTINCT(`clicks_ip`) 

但很明顯,該語法不起作用。

我到目前爲止在我的研究中一直無法找到解決方案。我開始認爲子查詢可能是答案 - 如果任何人有建議或建議,將不勝感激。

感謝

回答

1

如果我理解正確的話,我想你想是這樣的:

SELECT `clicks_region`, COUNT(*) as TOTAL 
FROM 
    (SELECT DISTINCT 'clicks_region', 'clicks_ip' 
    FROM 'clicks' 
    WHERE `clicks_to_websites_id` = '1' 
    AND DATE(`clicks_date`) = DATE('2011-08-30')) x 
GROUP BY `clicks_region` 
+0

似乎是工作 - 謝謝! – Chip

+0

很高興聽到它。您是否介意通過單擊答案左側的複選標記將此答案標記爲正確? – PaulStock

相關問題