【发布时间】:2017-07-06 18:34:49
【问题描述】:
假设我有一张如下表:
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
我知道不能在 MS-Access 中使用 COUNT(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 哪些列不同?不知道如何进行条件聚合,但会查一下,谢谢