我有一个包含以下列的表:
的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
谢谢,对不起,因为我认为这不相关,现在我看到了。
答案 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