MySQL分组和COUNT

时间:2011-06-14 08:32:18

标签: mysql

我有一个包含以下列的表:

的UniqueID remote_ip_addr 平台

我想创建一个查询,它基本上只显示每个平台的每个IP地址,并计算有多少个不同的平台条目

SELECT platform, COUNT(platform) 
FROM fuckedapps_dm_appdl dm 
GROUP BY platform 
ORDER BY COUNT(platform) DESC

例如,从下表中可以看出:

uniqueID---remote_ip_addr----platform
1           20.15.1.234       iPhone
2           20.15.1.234       iPhone
3           20.15.1.234       iPhone
4           20.15.1.234       Android
5           20.15.1.234       Android

我会得到以下结果:

platform----COUNT(platform)
iPhone          1
Android         1

现在我得到以下内容:

platform----COUNT(platform)
iPhone          3
Android         2

因为它们都是相同的ip,所以我只希望获得1个不同的值......

感谢您的帮助。

编辑:我应该提到还有另一个字段,叫做app_id。

所以表更像是:

uniqueID---remote_ip_addr----platform---app_id
1           20.15.1.234       iPhone      23
2           20.15.1.234       iPhone      23
3           20.15.1.234       iPhone      18
4           20.15.1.234       Android     24
5           20.15.1.234       Android     25

在这种情况下,我希望结果为:

platform----COUNT(platform)
iPhone          2
Android         2

谢谢,对不起,因为我认为这不相关,现在我看到了。

4 个答案:

答案 0 :(得分:1)

如果我理解正确,您需要每个平台,不同IP地址的数量。然后你可以用它。请注意每个(COUNT)平台DICTINCT remote_ip_addr的{​​{1}}:

GROUP BY

OP更新后。 (顺便说一下改变问题不是好习惯。)

目前尚不清楚您是否希望每个平台都有不同的app_id:

SELECT platform
     , COUNT(DISTINCT remote_ip_addr) AS countDistinctIPaddresses
FROM fuckedapps_dm_appdl dm 
GROUP BY platform 
ORDER BY countDistinctIPaddresses DESC

或每个平台的(app_id,remote_ip_addr)的不同组合:

SELECT platform
     , COUNT(DISTINCT app_id)
       AS cnt
FROM fuckedapps_dm_appdl dm 
GROUP BY platform 
ORDER BY cnt DESC

取决于想要的结果,比如你还有一行:

SELECT platform
     , COUNT(DISTINCT app_id, remote_ip_addr)
       AS cnt
FROM fuckedapps_dm_appdl dm 
GROUP BY platform 
ORDER BY cnt DESC

答案 1 :(得分:0)

改为使用COUNT(*)

SELECT platform, COUNT(*) 
FROM fuckedapps_dm_appdl dm 
GROUP BY platform 
ORDER BY COUNT(platform) DESC

答案 2 :(得分:0)

您还需要按IP地址分组:

SELECT platform, COUNT(*) 
FROM fuckedapps_dm_appdl dm 
GROUP BY platform, remote_ip_addr 
ORDER BY COUNT(platform) DESC

答案 3 :(得分:0)

您必须按IP地址分组才能获得不同平台的数量:

SELECT platform, COUNT(platform) 
FROM fuckedapps_dm_appdl dm 
GROUP BY remote_ip_addr 
ORDER BY COUNT(platform) DESC