这是我的SQL结构示例:
magazines
magazines.id
magazines.templateId
magazines.userId
我想计算用户使用特定模板ID的次数。
考虑3个模板id:100,101和102并考虑5个用户(10,20,30,40,50)。这是SQL数据的一个示例:
magazines
1, 100, 10
2, 100, 20
3, 100, 30
这里,3个不同的用户拥有模板#100。但是查询的结果应该是[100 = 1],因为它是不同的用户。另一方面,如果我有:
magazines
1, 100, 10
2, 100, 10
我应该有templateId [100 = 2]。
我尝试使用GROUP BY和UNIQUE进行多次查询,结果完全错误。如果有人可以提供帮助,谢谢。
答案 0 :(得分:0)
如果您想要用户使用模板的最大次数:
select templateid, userid, count(*)
from magazines m
where temploateid = X
group by templateid, userid
order by count(*) desc
limit 1;
编辑:
您可以通过聚合两次获得所需内容:
select templateid, cnt, count(*) as numUsers
from (select templateid, userid, count(*) as cnt
from magazines m
where temploateid = X
group by templateid, userid
) tu
group by templateid, cnt
order by templateid, cnt;
答案 1 :(得分:0)
这将为您提供每个用户使用特定模板的次数:
SELECT
templateId,
userId,
COUNT(id) as cnt
FROM
Magazines GROUP BY templateId, userId
如果您的表格包含以下数据:
(1, 100, 10),
(2, 100, 10),
(3, 100, 20),
(4, 100, 30)
然后你的结果集将是:
templateId userId cnt
100 10 2
100 20 1
100 30 1