sql - 如何计算 datetime2 部分的出现次数
问题描述
我一直在尝试找出如何对datetime2中的年份进行分组和计数。日期的其余部分无关紧要,只要它具有相同的年份,我希望它被计算和分组。这是我到目前为止的查询。我试图以整数形式获取日期的年份,并使用count方法试试运气,但只有在日期值完全相同时才会计算它。
DECLARE @user_id [int] =12
SELECT [date],user_id, COUNT(YEAR([date])) as yearCount
from table
where table.user_id = @user_id
group by date,user_id
查询显示的内容:
date user_id yearCount
------- ------- -----------
2020-11-12 00:00:00.0000000 12 1
2020-05-23 00:00:00.0000000 12 1
2021-06-01 00:00:00.0000000 12 1
2021-04-15 00:00:00.0000000 12 1
2022-02-20 00:00:00.0000000 12 1
2022-01-20 00:00:00.0000000 12 1
我希望它看起来像什么:
date user_id yearCount
------- ------- -----------
2020-11-12 00:00:00.0000000 12 2
2020-05-23 00:00:00.0000000 12 2
2021-06-01 00:00:00.0000000 12 2
2021-04-15 00:00:00.0000000 12 2
2022-02-20 00:00:00.0000000 12 2
2022-01-20 00:00:00.0000000 12 2
解决方案
您可以使用窗口版本count()
并按年份分区(以及可选的用户 ID——如果您真的只在结果中包含一个用户 ID,您也可以省略它)。
SELECT date,
user_id,
count(*) OVER (PARTITION BY year(date),
user_id) yearcount
FROM elbat
WHERE user_id = @user_id;
推荐阅读
- mysql - ARel 中的案例陈述
- windows - 如何在 Windows 10 中模拟驱动程序级别的键盘输入?
- excel - Excel,如何计算单词的多条记录
- java - 通过 Spring Boot 连接 mysql 时出现时区问题,相当于 Mitteleuropäische Zeit
- c# - WPF:如何关闭
当在滚动查看器鼠标滚轮动作之外时 - neo4j - 如何使用变量动态创建 Neo4j/Cypher 标签?
- asp.net - ASP.Net Core 中的授权
- sql-server - TFS 2010 升级到 TFS 2013 - SQL Server 2008 R2 备份和还原到 SQL Server 2012/14
- go - 将“func 返回指向结构的指针”分配给“func 返回指向接口的指针”类型的 var
- python - 在某些情况下 wtform 弹出窗口