说我有一个表,如下所示:SQL COUNT DISTINCT用于在MS Access每个ID
id category app
------------------------
1 game angry birds
1 game happy dogs
2 productivity calculator
3 health fitness tracker
1 game angry birds
2 game snake
该表显示每个用户打开一段时间的应用程序。例如,假设您每次在手机上打开应用时都记下了这些内容。现在为100人重复这一点。如上所述,所有这些数据都存储在一个表中。
我想弄清楚如何计算每个人在特定类别内使用多少个不同的应用程序。例如,对于“游戏”类别,我希望:
id num_apps
------------
1 2
2 1
3 0
我明白,一个人不能使用COUNT在MS-访问(DISTINCT ..),并已经看到如何实现这个其他职位 - 我尽管如此,仍然无法将其应用于这种情况。
我曾尝试以下,我相信给我的是如何在一个特定类别使用过的每个应用程序的人非重复计数:
SELECT COUNT(*)
FROM
(SELECT DISTINCT id AS gamer_id
FROM UseList
WHERE category = 'game')
AS b, UseList AS ul
WHERE b.gamer_id = ul.id AND category = 'game'
GROUP BY b.gamer_id;
我怎么能适用于不同的搜索呢?我想过以各种方式遍历每个gamer_id
,但这似乎并不太直接。 谢谢!
从WHERE删除游戏条件。相反,做条件聚合。 – jarlh
您的表格有一些列,但查询使用其他列。 – jarlh
@jarlh哪些列是不同的?不知道如何做条件聚合,但会查找它,谢谢 – Windmill