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

SQL如何查询指定条件用户最近两次缴税日期、总额及间隔

SQL实现方案

默认两张表核心字段如下,和你实际字段名不一致的话直接替换就行:

  • table1(缴税记录表):user_id 用户ID、tax_date 缴税日期、tax_amount 缴税金额
  • table2(用户产品关联表):user_id 用户ID、product_id 关联产品ID

实现步骤

  1. 筛出符合要求的目标用户:关联两表过滤product_id=12的用户,再校验用户最后一次缴税日期为2022-06-19
  2. 对目标用户按缴税日期倒序排序,取最近2条缴税记录
  3. 聚合计算两笔缴税的总金额,以及两次缴税的间隔天数

以下代码适配MySQL 8.0+、PostgreSQL等支持窗口函数的主流数据库:

WITH target_user AS (
    SELECT t1.user_id
    FROM table1 t1
    INNER JOIN table2 t2 ON t1.user_id = t2.user_id
    WHERE t2.product_id = 12
    GROUP BY t1.user_id
    HAVING MAX(t1.tax_date) = STR_TO_DATE('19/06/2022', '%d/%m/%Y')
),
user_recent_tax AS (
    SELECT
        user_id,
        tax_amount,
        tax_date,
        ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY tax_date DESC) AS rn
    FROM table1
    WHERE user_id IN (SELECT user_id FROM target_user)
)
SELECT
    user_id,
    SUM(tax_amount) AS total_tax_amount,
    DATEDIFF(MAX(tax_date), MIN(tax_date)) AS tax_interval_days
FROM user_recent_tax
WHERE rn <= 2
GROUP BY user_id;

适配提示:如果用SQL Server,把日期差函数替换为DATEDIFF(day, MIN(tax_date), MAX(tax_date)),字符串转日期函数对应替换为库内支持的格式即可;如果日期字段本身就是日期类型,直接去掉STR_TO_DATE函数写对应日期值就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:48:31