我有一个要求,就是必须在用户选择的日期范围内提取所有记录,选择从2011年1月15日到2011年8月20日开始的所有员工以及按日期分组.
我应该如何为此编写SQL查询:
SELECT * FROM employees WHERE startdate >= '15-jan-2011' AND startdate <= '20-aug-2011' GROUP BY startdate
解决方法
绝对.它将导致过滤日期范围内的记录,然后在有数据的每一天对其进行分组.
应该注意的是,您只能选择startdate,然后选择您正在计算的聚合.否则,它应该工作得很好.
例如,此查询将为您提供每个startdate的员工计数:
SELECT startdate,count(*) FROM employees WHERE startdate >= '15-jan-2011' AND startdate <= '20-aug-2011' GROUP BY startdate