我在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
答案 0 :(得分:6)
我不确切知道Count函数如何知道我想要它计算什么
COUNT
只能计算一件事 - 它可以计算行,其中表达式的计算结果为非空值。如果您在常规查询中使用COUNT(1)
,则每行都会获得1
。但是,对于GROUP BY
,COUNT
将返回特定组中的行数。在您的情况下,这将是具有相同Customers.name
的行数,因为这是您用于GROUP BY
的行。
就将1
传递给COUNT
而言,现在更常见的做法是传递星号,即写COUNT(*)
,因为在大多数RDBMS引擎中都没有性能对此的惩罚。
答案 1 :(得分:2)
对于找到的每条记录,计数正在计算true
。因此,如果有3条记录,则计算true
3次并返回3
。只要它存在或是一个常数,它在那里的重要性并不重要。如果存在,则计算。它是您分组时分组的行数。
答案 2 :(得分:-3)
它计算结果集中第一个字段的出现次数