如何用SQL统计当前日期Lesson1的‘Present’及‘Absent’记录数?
统计当前日期Lesson1的出勤记录数量
要同时统计当前日期下Lesson1的Present和Absent记录数量,你可以在WHERE子句中添加当前日期的筛选条件,同时通过分组查询一次性得到两种状态的统计结果:
SELECT Lesson_1 AS 出勤状态, COUNT(*) AS 记录数量 FROM [Attendance_Management_System].[dbo].[Attendance_Table] WHERE -- 匹配当前日期(忽略时间部分) CAST(Attendance_Date AS DATE) = CAST(GETDATE() AS DATE) -- 仅筛选目标状态 AND Lesson_1 IN ('Present', 'Absent') GROUP BY Lesson_1;
关键说明:
CAST(Attendance_Date AS DATE):如果Attendance_Date是带时间的datetime类型,转换为DATE类型可以只匹配日期部分,避免时间差异导致的筛选遗漏CAST(GETDATE() AS DATE):获取SQL Server服务器的当前日期GROUP BY Lesson_1:按出勤状态分组,一次性统计两种状态的数量
如果你需要分别查询两种状态的数量,也可以用以下写法:
-- 统计Present数量 SELECT COUNT(*) AS Present数量 FROM [Attendance_Management_System].[dbo].[Attendance_Table] WHERE CAST(Attendance_Date AS DATE) = CAST(GETDATE() AS DATE) AND Lesson_1 = 'Present'; -- 统计Absent数量 SELECT COUNT(*) AS Absent数量 FROM [Attendance_Management_System].[dbo].[Attendance_Table] WHERE CAST(Attendance_Date AS DATE) = CAST(GETDATE() AS DATE) AND Lesson_1 = 'Absent';
内容的提问来源于stack exchange,提问作者khalid alsabbali
相关产品推荐
相关产品推荐

