表结构非常简单:
UserId ReportId
我有一个这样的查询:
SELECT UserId, COUNT(*) AS 'ReportsRead'
FROM MyReports
GROUP BY UserId
基本上,这将为我提供每个用户的阅读报告总数。我想弄清楚的是如何获得每个用户已阅读的唯一报告的总数。因此,如果他以id为1读取10次报告,则计为1。
我已经尝试将ReportId添加到Select和Group by,但所有这一切都为我提供了超过几行的总数。我想要的是在一行中获得总数。没有做子查询是否可能?
答案 0 :(得分:2)
使用count(distinct)
:
SELECT UserId, COUNT(DISTINCT reportId) AS ReportsRead
FROM MyReports
GROUP BY UserId;
不要将列别名用单引号括起来。仅对日期和字符串常量使用单引号。