有人可以解释Count如何在这个SQL查询中工作吗?

时间:2014-07-16 20:45:52

标签: sql sql-server reporting-services

我在SSRS中创建了一个表,其中包含第1列中的客户名称及其在第2列中的相应订单数。此查询适用于我正在尝试完成的任务,但我不确切知道计数如何函数知道我想要它计算什么,以及我想要它从哪个表计数。有人可以向我解释一下这样我以后可以更好地理解吗?非常感谢。

SELECT Customers.name
    ,Count(1) AS OrderCount
FROM Customers
INNER JOIN Orders
    ON Customers.id = Orders.customer_id
GROUP BY Customers.name

3 个答案:

答案 0 :(得分:6)

  

我不确切知道Count函数如何知道我想要它计算什么

COUNT只能计算一件事 - 它可以计算,其中表达式的计算结果为非空值。如果您在常规查询中使用COUNT(1),则每行都会获得1。但是,对于GROUP BYCOUNT将返回特定组中的行数。在您的情况下,这将是具有相同Customers.name的行数,因为这是您用于GROUP BY的行。

就将1传递给COUNT而言,现在更常见的做法是传递星号,即写COUNT(*),因为在大多数RDBMS引擎中都没有性能对此的惩罚。

答案 1 :(得分:2)

对于找到的每条记录,计数正在计算true。因此,如果有3条记录,则计算true 3次并返回3。只要它存在或是一个常数,它在那里的重要性并不重要。如果存在,则计算。它是您分组时分组的行数。

答案 2 :(得分:-3)

它计算结果集中第一个字段的出现次数