如何在EF Core中按时间范围过滤数据并计算总和?
按日期范围汇总数据的实现方法
针对你的表结构,要计算指定日期范围内的value总和,分两种场景给出SQL实现:
1. 按完整年份范围汇总(如2014年至2016年所有数据)
直接通过year字段筛选年份区间,再求和:
SELECT SUM(value) AS total_value FROM your_table_name WHERE year BETWEEN 2014 AND 2016;
替换your_table_name为你的实际表名即可。
2. 精确到月份的范围汇总(如2014年11月至2016年7月)
如果需要更精细的月份范围判断,有两种写法:
写法一:分区间逻辑判断
SELECT SUM(value) AS total_value FROM your_table_name WHERE (year = 2014 AND month >= 11) OR year = 2015 OR (year = 2016 AND month <= 7);
写法二:将年份和月份转换为日期后比较
利用数据库的日期函数组合year和month为标准日期,再用BETWEEN筛选:
- MySQL/MariaDB:
SELECT SUM(value) AS total_value FROM your_table_name WHERE STR_TO_DATE(CONCAT(year, '-', month, '-01'), '%Y-%m-%d') BETWEEN '2014-11-01' AND '2016-07-01';
- PostgreSQL:
SELECT SUM(value) AS total_value FROM your_table_name WHERE TO_DATE(CONCAT(year, '-', month), '%Y-%m') BETWEEN '2014-11-01' AND '2016-07-01';
- SQL Server:
SELECT SUM(value) AS total_value FROM your_table_name WHERE CAST(CONCAT(year, '-', month, '-01') AS DATE) BETWEEN '2014-11-01' AND '2016-07-01';
内容的提问来源于stack exchange,提问作者Irakli925
相关产品推荐
相关产品推荐

