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

构建T-SQL查询:找出交易数据中日均有销售的高频产品

解决思路:统计产品的日均覆盖(销售日期数量)

要解决这个问题,核心是统计每个产品有多少个不同的销售日期——毕竟单日同一产品的多条交易只能算一天的覆盖,我们的目标是找出覆盖日期最多的产品,具体步骤和实现如下:

步骤拆解

  1. 计算单产品覆盖天数:按产品分组,统计每个产品对应的去重销售日期数量,这就是该产品的日均覆盖天数。
  2. 定位最大覆盖天数:找出所有产品中最高的覆盖天数,以此为筛选标准。
  3. 筛选目标产品:提取覆盖天数等于最大值的产品,得到最终结果。

完整T-SQL查询代码

WITH ProductCoverage AS (
    -- 第一步:统计每个产品的去重销售日期数量
    SELECT 
        产品,
        -- 如果日期是字符串格式,建议转换为DATE类型避免格式错误,示例用dd.mm.yy格式转换
        COUNT(DISTINCT CONVERT(DATE, 日期, 104)) AS 覆盖天数
    FROM 
        交易数据表名 -- 替换为你的实际表名
    GROUP BY 
        产品
),
MaxCoverage AS (
    -- 第二步:获取所有产品中的最大覆盖天数
    SELECT MAX(覆盖天数) AS 最大覆盖天数 FROM ProductCoverage
)
-- 第三步:筛选出达到最大覆盖天数的产品
SELECT 
    pc.产品,
    pc.覆盖天数
FROM 
    ProductCoverage pc
JOIN 
    MaxCoverage mc ON pc.覆盖天数 = mc.最大覆盖天数
ORDER BY 
    pc.产品;

针对示例数据的验证

用你提供的示例数据运行该查询:

  • cleaner在02.01.19至08.01.19的7天里每天都有销售,因此覆盖天数=7
  • tablet仅在02.01.19和08.01.19有销售,覆盖天数=2
  • 其余产品的覆盖天数均小于7天

最终查询结果会返回cleaner;如果有多个产品覆盖天数相同,都会被一并返回。

额外提示

  • 如果你的日期字段本身就是DATE类型,可以去掉CONVERT函数,直接用COUNT(DISTINCT 日期)即可。
  • 若需要同时展示产品ID、总销量等附加信息,可在ProductCoverageCTE中加入对应字段,并在GROUP BY子句中包含它们。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:27:04