多级分组如何工作? [关闭]
Posted
技术标签:
【中文标题】多级分组如何工作? [关闭]【英文标题】:How does multilevel grouping work? [closed] 【发布时间】:2012-12-29 10:15:18 【问题描述】:我不确定如何处理以下查询。我读了这个查询,我知道它会给我什么输出。但是,我想知道它是如何在概念上处理的。
select FirstName, LastName, COUNT(CertificateId) as CertificatesAcheived
from Employee left join [Achivements]
on Employee.EmpID = [Achivements].EmpID
group by FirstName, LastName
好的,这就是我认为它的工作原理(如果我错了,请告诉我)-
首先,生成类型为 (First Name, LastName) 的对,即 (f1,n1)(f1,n2)(f2,n5)(f3,n5) 等等。许多人可以有相同的名字和/或姓氏。
然后,对于每个这样的对,Count(---) 将计算获得的证书数量。
(...是的,我知道姓名完全相同的员工将被视为一名员工,但这对我来说并不重要)
【问题讨论】:
真正的问题是什么?您想要实现什么,以及是什么让您认为这个查询没有实现? @skyscraper 你对你认为它是如何工作的解释似乎是正确的。 @Arkain - 你知道有什么书可以这样解释吗? 【参考方案1】:不确定 sql express 2008,但它通常是这样工作的:
首先创建一个连接
from Employee left join [Achivements] on Employee.EmpID = [Achivements].EmpID
然后创建组:
group by FirstName, LastName
具有相同名字和姓氏的所有行将属于同一组
每个组的输出将是一行:名字、姓氏和组中的行数
select FirstName, LastName, COUNT(CertificateId) as CertificatesAcheived
【讨论】:
以上是关于多级分组如何工作? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章