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

Oracle 11.2 如何统计日期列最大值对应的行数量

错误原因

原语句HAVING子句中的max(ourDate)是GROUP BY ourDate分组后的组内聚合结果。因为每个分组内的ourDate取值完全相同,每个分组算出的max(ourDate)自然和本组的ourDate相等,相当于HAVING条件永远成立,所以会返回所有日期的计数,达不到只筛选全表最大日期的效果。

修正方法

以下写法均兼容Oracle 11.2版本,可根据表数据量选择:

  • 写法1:子查询取全局最大值(逻辑直观,通用易读)
    通过标量子查询提前计算全表ourDate的最大值,分组后仅保留匹配该值的分组:
SELECT ourDate, COUNT(1) AS OUR_COUNT
FROM schema1.table1
GROUP BY ourDate
HAVING ourDate = (SELECT MAX(ourDate) FROM schema1.table1);
  • 写法2:WHERE预过滤(性能更优,推荐大表使用)
    先通过WHERE条件过滤出仅包含全表最大日期的行,再直接计数,省去全表分组的开销:
SELECT
    MAX(ourDate) AS ourDate,
    COUNT(1) AS OUR_COUNT
FROM schema1.table1
WHERE ourDate = (SELECT MAX(ourDate) FROM schema1.table1);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:51:30