[英]MySQL Query to get count of unique values?
命中表:
hid | lid | IP
1 | 1 | 123.123.123.123
2 | 1 | 123.123.123.123
3 | 2 | 123.123.123.123
4 | 2 | 123.123.123.123
5 | 2 | 123.123.123.124
6 | 2 | 123.123.123.124
7 | 3 | 123.123.123.124
8 | 3 | 123.123.123.124
9 | 3 | 123.123.123.124
如您所見,以下是各種蓋子的獨特命中:
lid 1: 1 unique hit
lid 2: 2 unique hits
lid 3: 1 unique hit
基本上,我需要一個返回以下內容的查詢:
lid | uhits |
1 | 1 |
2 | 2 |
3 | 1 |
有誰知道怎么做到的?
Select lid, count(distinct IP) as uhits
from hits
group by lid
在你開始進入非常復雜的查詢之前,SQL就是這樣做的,所以它看起來就像一個自然的句子。 首先,如果您可以准確描述查詢的內容,那么您已經編寫了一半SQL。
在這種情況下,您可以描述您的問題,如:
獲取
lid
以及每個lid
表格中唯一IP
的總計數。
唯一剩下的就是使用SQL關鍵字來翻譯它。 這里重要的是:
SELECT
COUNT
DISTINCT
SELECT <aggregate function>..GROUP BY <field>
所以,你上面的句子開始看起來像:
SELECT
lid
和DISTINCT
IP
FROM
我的表GROUP BY
lid
的聚合COUNT
。
刪除不必要的單詞,並將其清理為使用SQL語法會留下最終查詢:
SELECT hits.lid, COUNT(DISTINCT hits.IP) AS uhits
FROM hits
GROUP BY hits.lid
SELECT lid, COUNT(DISTINCT IP)
FROM hits
GROUP BY lid
你需要使用group by:
SELECT lid, count(*)
FROM Table
GROUP BY lid
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.