SQL将重复的行报告为计数
Posted
技术标签:
【中文标题】SQL将重复的行报告为计数【英文标题】:SQL report duplicated rows into count into count 【发布时间】:2018-11-06 11:43:14 【问题描述】:首先让我告诉你,我没有任何 SQL 经验,但是我最近改变了职位,考虑到这种情况,我运行一些脚本然后单独检查应用程序中的每条记录会更容易。这是场景:
我有两张桌子: 用户 具有用户 ID、用户名、电子邮件等.. 和 文档,包含 DocumentID 和 UserID、文档名称以及其他一些列。
我想创建一个报告,以帮助我检查用户是否将文档附加到他们的个人资料中。
我现在做的是
SELECT UsersTable.UserID,
DocumentsTable.DocumentID,
DocumentsTable.UserID
FROM UserTable
LEFT JOIN DocumentTable ON UserTable.UserID = DocumentTable.UserID
我遇到的问题是,一些用户的个人资料中已经附加了 2 个或更多文档,这会导致重复。 例如,在报告中我看到这样的行
-
User1 文档A
User2 文档A
User2 文档B
User2 文档C
User3 文档A
等等
有没有办法以某种方式将这些文档转换为基于 UserID 计数的值?所以我想看看
-
用户1 1
用户2 3
用户3 1
【问题讨论】:
【参考方案1】:您正在寻找GROUP BY
。我建议将查询编写为:
SELECT ut.UserID, COUNT(dt.UserID)
FROM UserTable ut LEFT JOIN
DocumentTable dt
ON ut.UserID = dt.UserID
GROUP BY ut.UserID
ORDER BY ut.UserID;
注意事项:
表别名的使用使查询更易于编写和阅读。ORDER BY
保证结果按用户 ID 排序。
COUNT()
基于 second 表,因为可能不匹配。
【讨论】:
谢谢!该解决方案按预期工作。我批准了你的解决方案以上是关于SQL将重复的行报告为计数的主要内容,如果未能解决你的问题,请参考以下文章
SQL - 计数 WHERE AGGREGATE>1 [重复]