可以使用Oracle中的日期函数和聚合函数来实现:

SELECT 
    TO_CHAR(date_col, 'YYYY-MM') AS month,
    TO_CHAR(date_col, 'IW') AS week,
    COUNT(*) AS count
FROM 
    your_table
WHERE 
    TO_CHAR(date_col, 'D') IN ('6', '7')
GROUP BY 
    TO_CHAR(date_col, 'YYYY-MM'),
    TO_CHAR(date_col, 'IW')
ORDER BY 
    month, week;

解释:

  • TO_CHAR(date_col, 'YYYY-MM'):将日期列转换为年月格式
  • TO_CHAR(date_col, 'IW'):将日期列转换为周数格式
  • WHERE TO_CHAR(date_col, 'D') IN ('6', '7'):筛选出周六和周日的数据
  • GROUP BY TO_CHAR(date_col, 'YYYY-MM'), TO_CHAR(date_col, 'IW'):按年月和周数分组
  • COUNT(*):统计每组的记录数

注意:

  • TO_CHAR(date_col, 'IW') 函数返回的是 ISO 标准的周数,即一周从周一开始,周日结束。如果你的需求是从周六开始,可以使用 TO_CHAR(date_col+1, 'IW')
  • 上述语句中,假设日期列的名称为 date_col,你需要将其替换为实际的列名。
oracle数据库我要统计一张表每个月每周六和周日的count数据

原文地址: http://www.cveoy.top/t/topic/b36z 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录