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

SQL查询实现NETWORK表按年月统计所有交易Value均≤50的唯一Card数量

需求背景

现有数据库表NETWORK,包含3个字段:

  • Card:交易银行卡号
  • Date:交易日期,日期类型
  • Value:单笔交易金额

统计规则

按年份、月份分组统计符合条件的去重卡号数量,规则如下:

  • 仅当某张卡在对应月份的所有交易金额均≤50时,该卡计入当月统计
  • 若某张卡在对应月份存在任意一笔交易金额>50,该卡不计入当月统计

实现思路

核心判断逻辑:对单卡单月的所有交易,只要最大交易金额≤50,即可证明该卡当月所有交易都符合要求,反之则不符合。
通过两层分组实现:

  1. 内层先按「卡号+年份+月份」分组,过滤出符合条件的卡号
  2. 外层再按「年份+月份」分组,统计符合条件的卡号数量即可

通用SQL实现(兼容多数主流数据库)
SELECT
    stat_year AS 统计年份,
    stat_month AS 统计月份,
    COUNT(Card) AS 符合条件卡号数
FROM (
    SELECT
        Card,
        EXTRACT(YEAR FROM Date) AS stat_year,
        EXTRACT(MONTH FROM Date) AS stat_month
    FROM NETWORK
    GROUP BY Card, stat_year, stat_month
    HAVING MAX(Value) <= 50
) valid_card_month
GROUP BY stat_year, stat_month
ORDER BY stat_year, stat_month;

不同数据库适配说明

  • MySQL/SQL Server环境可将日期函数替换为YEAR(Date)、MONTH(Date),写法更简洁
  • Oracle环境也可使用TO_CHAR(Date, 'yyyy')、TO_CHAR(Date, 'mm')获取年月

样例数据运行结果

针对提供的样例数据,运行上述SQL后输出结果如下:

统计年份统计月份符合条件卡号数
202012
202021
202131

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:06:03