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

Firebird环境下SQL实现按用户统计奖励数量及各奖励最后获取日期

Firebird SQL查询:按用户统计奖励数量及最后获取日期

要实现你需要的统计效果,我们可以用条件聚合的方式——在聚合函数中结合CASE语句,针对不同奖励类型分别计算数量和最后日期,完美适配Firebird的SQL语法。

完整SQL查询语句

SELECT
    NAME,
    COUNT(CASE WHEN REWARD = 'big' THEN 1 END) AS BIG_REWARDS,
    COUNT(CASE WHEN REWARD = 'small' THEN 1 END) AS SMALL_REWARDS,
    MAX(CASE WHEN REWARD = 'big' THEN DATE END) AS LAST_BIG_REWARD,
    MAX(CASE WHEN REWARD = 'small' THEN DATE END) AS LAST_SMALL_REWARD
FROM
    YOUR_TABLE_NAME  -- 替换成你的实际表名
GROUP BY
    NAME
ORDER BY
    NAME;

代码解释

  • 分组基础:通过GROUP BY NAME确保我们按每个用户单独统计
  • 奖励数量统计:
    • COUNT(CASE WHEN REWARD = 'big' THEN 1 END):当奖励类型为big时返回1,否则返回NULL;COUNT函数会自动忽略NULL值,最终得到该用户的大奖励总数
    • 小奖励数量的统计逻辑完全一致,只需把条件换成REWARD = 'small'
  • 最后奖励日期:
    • MAX(CASE WHEN REWARD = 'big' THEN DATE END):针对大奖励的记录取最大的日期值,也就是最后一次获取大奖励的日期
    • 小奖励的最后日期同理,替换条件即可;如果用户没有该类型的奖励,会返回NULL(和你预期的结果格式一致)

执行结果

执行后会得到你需要的宽表格式结果:

NAMEBIG_REWARDSSMALL_REWARDSLAST_BIG_REWARDLAST_SMALL_REWARD
Chris1201.07.201427.08.2015
Tom2030.11.2017

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:03:03