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

如何按月份/年份展示去重Name列及其累计Count值?

按姓名和年月聚合统计累计值的SQL查询方法

核心逻辑是按姓名分组,同时按年月维度聚合,对Count (*)列求和,并将日期格式化为MonYYYY样式。以下是主流数据库的实现方案:

原始数据(示例表假设名为your_table)

Name   "Count (*)"  Date
Blue    2         01-NOV-22
Blue    1         03-NOV-22
Blue    3         11-NOV-22
Green   5         01-NOV-22
Green   5         11-NOV-22 

1. Oracle 数据库

用TO_CHAR格式化日期,按姓名和格式化后的年月分组,对"Count (*)"列求和:

SELECT
  Name,
  SUM("Count (*)") AS count,
  TO_CHAR(Date, 'MONYYYY') AS Date
FROM your_table
-- 如需指定年月,添加筛选条件,例如2022年11月:
-- WHERE Date BETWEEN TO_DATE('01-NOV-22', 'DD-MON-RR') AND TO_DATE('30-NOV-22', 'DD-MON-RR')
GROUP BY Name, TO_CHAR(Date, 'MONYYYY')
ORDER BY Name;

2. MySQL 数据库

使用DATE_FORMAT处理日期格式,分组逻辑一致:

SELECT
  Name,
  SUM(`Count (*)`) AS count,
  DATE_FORMAT(Date, '%b%Y') AS Date
FROM your_table
-- 指定年月的筛选条件,例如2022年11月:
-- WHERE YEAR(Date) = 2022 AND MONTH(Date) = 11
GROUP BY Name, DATE_FORMAT(Date, '%b%Y')
ORDER BY Name;

注意:如果日期列存储为字符串,需先转换为日期类型,例如STR_TO_DATE(Date, '%d-%b-%y'),再进行格式化和筛选。


3. SQL Server 数据库

用FORMAT或DATENAME组合生成目标日期格式:

SELECT
  Name,
  SUM([Count (*)]) AS count,
  FORMAT(Date, 'MMMyyyy') AS Date
FROM your_table
-- 指定年月的筛选条件,例如2022年11月:
-- WHERE YEAR(Date) = 2022 AND MONTH(Date) = 11
GROUP BY Name, FORMAT(Date, 'MMMyyyy')
ORDER BY Name;

兼容性更好的DATENAME写法:

SELECT
  Name,
  SUM([Count (*)]) AS count,
  CONCAT(DATENAME(MONTH, Date), YEAR(Date)) AS Date
FROM your_table
WHERE YEAR(Date) = 2022 AND MONTH(Date) = 11
GROUP BY Name, DATENAME(MONTH, Date), YEAR(Date)
ORDER BY Name;

执行结果

以上查询均可得到期望输出:

Name    count   Date
Blue    6       Nov2022
Green   10      Nov2022

内容的提问来源于stack exchange,提问作者daisy.xa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 16:58:24