MySQL查询以获取唯一值的计数?
点击表:MySQL查询以获取唯一值的计数?,mysql,database,Mysql,Database,点击表: 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 |
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(*)
FROM Table
GROUP BY lid
在您开始进行非常复杂的查询之前,SQL是这样生成的,所以它读起来非常像一个自然的句子。因此,首先,如果您能够准确地描述您想要从查询中得到什么,那么您已经编写了一半的SQL 在这种情况下,您可以这样描述您的问题: 从我的表中为每个
lid
获取lid
和唯一IP
的合计计数
剩下的唯一一件事就是使用SQL关键字来翻译它。这里最重要的是:
- 获取->
选择
- 计数->
count
- 唯一->
不同的
- 聚合..对于每个->
选择..分组依据
选择
lid
并从我的表格分组依据lid
中选择和
不同的IP
删除不必要的单词,并将其清理为使用SQL语法,则留下最终查询:
SELECT hits.lid, COUNT(DISTINCT hits.IP) AS uhits
FROM hits
GROUP BY hits.lid
我已通过在每行缩进4个空格来重新格式化代码。请参阅编辑屏幕右侧的格式帮助(正确答案+1)+好答案+1(你也比我快)。请原谅我的编辑,但我冒昧地删除了一个额外的(不平衡的)右括号。+1:第一次提交格式正确且没有任何错误的答案。实际上,分组方式使它们与众不同。
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