【问题标题】:SQL Server - Count the number of times the contents of a specified field repeat in a tableSQL Server - 计算表中指定字段的内容重复的次数
【发布时间】:2015-05-12 20:17:26
【问题描述】:

从表/视图中“选择”字段的“DISTINCT”列表(使用“WHERE”标准)并计算该字段内容在表/视图中重复的次数的最佳方法是什么?

换句话说,我有一个看起来有点像这样的初始视图:

我想要一个 SQL 查询来过滤它(SELECT...WHERE...),以便我们只考虑 [ORDER COMPLETE] = False 和 [PERSONAL] = Null...的记录...

...然后创建一个不同的名称列表,计算每个名称在上表中出现的次数:

*此时显示 [ORDER COMPLETE] 和 [PERSONAL] 字段是多余的,可以删除以简化。

我可以像上面那样单独执行这些步骤,但是很难获得一个查询来完成这一切......感谢任何帮助!

提前致谢,

-蒂姆

【问题讨论】:

  • SELECT <fields>, COUNT(*) FROM <table> WHERE <clauses> GROUP BY <fields>
  • 这看起来像一个非常简单的COUNT(*) 查询。你遇到什么问题了吗?您是否尝试过一些不起作用的方法?

标签: sql-server count distinct


【解决方案1】:

应该就是下面这个

SELECT dbo.tblPerson.Person,
       COUNT(dbo.tblPerson.Person) AS Count
  FROM dbo.tblPerson
INNER JOIN dbo.tblNotifications ON dbo.tblPerson.PersonID = dbo.tblNotifications.AddresseeID
 WHERE dbo.tblNotifications.Complete = 'False'
   AND dbo.tblNotifications.Personal IS NULL
GROUP BY dbo.tblPerson.Person
ORDER BY COUNT(dbo.tblPerson.Person) DESC

您不需要您的 DISTINCT 或 TOP 100 PERCENT,

Here 是一个简化的小提琴

【讨论】:

  • 感谢代码清理!我刚刚有一个问题:最后一行:“ORDER BY COUNT(dbo.tblPerson.Person) DESC”不只是添加不必要的处理吗?鉴于我们已经执行了 COUNT 并将其称为“Count”,我们不能只是“ORDER BY Count DESC”吗?
  • 你可以只使用别名,但是 SQL 处理器不会使用别名来“存储”计数结果,如果它们不匹配,请再次执行计算,它会计算出来最快的方式本身,只执行一次所需的操作。两种情况下的查询计划都是相同的。 (刚刚在本地数据库上测试过,查询计划是一样的)
【解决方案2】:

好吧,我被否决了(可能是为了展示我自己的无知!),但以防未来有人遇到与我相同的问题并在谷歌搜索(或您使用的任何动词)时偶然发现这个问题用于“在遥远的将来搜索所有数字化人类知识”),这是我最终设法开始工作的查询的一些净化代码 - 感谢 Mark Sinkinson 的 sn-p 帮助我实现了显而易见的......

SELECT DISTINCT TOP (100) PERCENT dbo.tblPerson.Person, COUNT(dbo.tblPerson.Person) AS CountPerson
FROM     dbo.tblPerson INNER JOIN
dbo.tblNotifications ON dbo.tblPerson.PersonID = dbo.tblNotifications.AddresseeID
WHERE  (dbo.tblNotifications.Complete = 'False') AND (dbo.tblNotifications.Personal IS NULL)
GROUP BY dbo.tblPerson.Person
ORDER BY CountPerson DESC

【讨论】:

    猜你喜欢
    • 2019-04-21
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-11
    相关资源
    最近更新 更多