说我有一张表如下:
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
,但这似乎也不太简单。
谢谢!
答案 0 :(得分:0)
你可以使用
select t.id, count(*)
from (
select distinct id, app
from UseList
where categorty ='game') t
group by t.id
答案 1 :(得分:0)
我不确定我明白了,但你可以尝试一下吗?
SELECT A.ID, A.CATEGORY , COUNT(APP) AS NUM_APPS
FROM
(SELECT A1.ID, A2.CATEGORY
FROM ( SELECT DISTINCT ID FROM TG1) A1
CROSS JOIN (SELECT DISTINCT CATEGORY FROM TG1) A2
) A
LEFT JOIN (SELECT DISTINCT ID, CATEGORY, APP
FROM TG1) B ON A.ID=B.ID AND A.CATEGORY=B.CATEGORY
GROUP BY A.ID, A.CATEGORY