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

如何用SQL查询判断用户日期年份是否连续并统计相关信息?

解决方案:统计用户日期记录数并判断年份连续性

核心思路

判断年份是否连续的关键逻辑:用户的最大年份与最小年份的差值加1,等于该用户拥有的不同年份的数量。如果相等,说明年份是连续无间隔的;反之则存在间隔。

实现SQL代码

以下以MySQL为例(其他数据库仅年份提取函数略有差异,注释中已说明):

SELECT
    User,
    COUNT(*) AS Count,
    CASE
        -- 计算年份范围跨度(含首尾)是否等于不同年份的数量
        WHEN (MAX(YEAR(Date)) - MIN(YEAR(Date)) + 1) = COUNT(DISTINCT YEAR(Date)) THEN 'Y'
        ELSE 'N'
    END AS Sequential
FROM your_table_name -- 替换成你的数据表名
GROUP BY User;

代码说明

  1. COUNT(*): 统计每个用户的总日期记录数,对应结果中的Count列。
  2. MAX(YEAR(Date)) - MIN(YEAR(Date)) + 1: 计算从用户最早记录年份到最晚记录年份的总年数(包含起始和结束年份)。
  3. COUNT(DISTINCT YEAR(Date)): 统计用户拥有的不同年份的数量(自动去重同一年的多条记录)。
  4. CASE判断: 对比上述两个数值,相等则返回Y(年份连续),否则返回N(年份存在间隔)。

不同数据库适配说明

  • PostgreSQL:将YEAR(Date)替换为EXTRACT(YEAR FROM Date)
  • SQL Server:与MySQL一致,使用YEAR(Date)
  • Oracle:使用EXTRACT(YEAR FROM Date)或TO_CHAR(Date, 'YYYY')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:35:08