2011-06-14 54 views
0

我有一个包含以下各列的表:MySQL的分组依据和COUNT

的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 

谢谢和抱歉,因为我不认为这是有关现在我明白了。

回答

1

如果我理解正确,您希望为每个平台指定不同IP地址的数量。然后你可以使用这个。注意COUNT ING的DICTINCT remote_ip_addr每隔(GROUP BY)平台:

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

OP的更新之后。 (顺便改变问题不是好习惯)。的(APP_ID,remote_ip_addr)S下每一个洗车台

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

或不同的组合:

,如果你想为每一个洗车台不同app_ids目前尚不清楚

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

要看什么想要的结果是说,如果你有多一行:

uniqueID---remote_ip_addr----platform---app_id 
6   100.30.1.40  iPhone  23 
+0

这是到达那里,我应该提到那里有另一列,现在编辑我的答案。 – 2011-06-14 08:56:55

+0

第一个做到了,谢谢! – 2011-06-14 09:23:10

0

使用COUNT(*)代替:

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

COUNT(*)'会给出与COUNT(platf)不同的结果orm)'? – 2011-06-14 08:50:59

0

你需要按IP地址,以及:

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

你必须按IP地址,以获得不同的平台的数量:

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