如何不使用ROW_NUMBER()统计员工的不同国籍数量
解决方法:统计员工国籍数量(不使用ROW_NUMBER())
嘿,这事儿其实很容易调整!你原来的查询用ROW_NUMBER()给每个员工的国籍记录编了号,但我们真正需要的是统计每个员工关联的国籍总数,直接用GROUP BY配合聚合函数COUNT()就能搞定,完全不需要窗口函数。
改写后的SQL查询:
SELECT an.EmployeeId, COUNT(c.CountryId) AS Count FROM Nationality an JOIN country c ON an.CountryId = c.id GROUP BY an.EmployeeId
逻辑说明:
GROUP BY an.EmployeeId:把数据按员工ID分组,让我们能针对每个员工单独做统计COUNT(c.CountryId):统计每个分组里关联的有效国籍记录数(因为JOIN确保了CountryId对应真实的国家数据,用COUNT(*)也能得到同样结果,不过指定具体字段会更清晰)
执行这个查询后,会直接返回你期望的输出:
EmployeeId Count ---------------- 45 2 33 1 66 1
内容的提问来源于stack exchange,提问作者mohamed-mhiri
相关产品推荐
相关产品推荐

