You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL查询求助:按员工统计csa_taken=2的记录数

SQL统计问题:按员工统计csa_taken=2的记录数

原始数据表

假设你的表名为employeeCSA,数据如下:

id emp_id csa_taken
1  100    2
2  100    2
3  100    0
4  100    2
5  101    2
6  101    2
7  101    0
8  101    0

预期统计结果

你想要得到每个员工对应的csa_taken=2的记录数:

emp_id count_csa_taken
100    3
101    2

我尝试的查询(未成功)

Select count(employee_id) From $employeeCSA where csa_taken=2

正确的查询方案

作为SQL新手,你现在的问题主要有两个:一是没有按员工ID分组,你的查询只会返回所有符合条件的总记录数,而不是每个员工各自的数量;二是字段名不匹配(你用了employee_id,但表中实际是emp_id)。

这里给你两种可行的写法,第一种是最直接满足你需求的:

写法一(基础分组统计)

SELECT emp_id, COUNT(*) AS count_csa_taken
FROM employeeCSA
WHERE csa_taken = 2
GROUP BY emp_id;

语句说明:

  • COUNT(*):统计每个分组内的记录数,因为已经用WHERE过滤了csa_taken=2的记录,所以这就是每个员工对应的目标数量
  • AS count_csa_taken:给统计列起一个和你预期结果一致的别名,方便阅读
  • GROUP BY emp_id:核心!告诉SQL要按照员工ID来分组统计,把相同emp_id的记录归为一组计算数量

写法二(兼容无符合条件记录的情况)

如果之后你需要统计所有员工,哪怕某个员工没有csa_taken=2的记录也要显示0,可以用这种写法:

SELECT emp_id, 
       COUNT(CASE WHEN csa_taken = 2 THEN 1 END) AS count_csa_taken
FROM employeeCSA
GROUP BY emp_id;

这个写法不需要WHERE子句,而是用CASE语句判断每条记录是否符合条件,符合的话计数,不符合则不计数,最终得到所有员工的统计结果。


内容的提问来源于stack exchange,提问作者Bhagwa Dhari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 16:37:57