Oracle SQL查询实现按人员判断是否至少出席过1次的需求
Oracle SQL 实现方案
假设你的表名为 person_attendance,可根据场景选择以下两种实现方案:
- 方案一:全量统计场景(性能更优)
通过分组聚合直接计算所有人员的考勤标记,适合需要输出全量人员结果的场景:
SELECT PersonColumn, CASE WHEN MAX(CASE WHEN AttendedColumn = 'attended' THEN 1 ELSE 0 END) = 1 THEN 1 ELSE 0 END AS attendance_flag FROM person_attendance GROUP BY PersonColumn ORDER BY PersonColumn;
- 方案二:灵活过滤场景
如果需要先对人员做额外过滤再统计,用EXISTS子查询的方式资源消耗更低:
SELECT DISTINCT t1.PersonColumn, CASE WHEN EXISTS ( SELECT 1 FROM person_attendance t2 WHERE t2.PersonColumn = t1.PersonColumn AND t2.AttendedColumn = 'attended' ) THEN 1 ELSE 0 END AS attendance_flag FROM person_attendance t1 ORDER BY PersonColumn;
两种方案输出结果均与预期要求一致,输出字段名可根据实际需求调整。
内容的提问来源于stack exchange,提问作者chris56tv
相关产品推荐
相关产品推荐

