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

如何合并两个SQL查询,一次性获取产品明细及对应月度销售数据

SQL合并方案

可以通过LEFT JOIN关联预聚合的销售数据,实现单次查询拿到所有产品明细和对应销售数据,无需循环查询,合并后的语句如下:

SELECT 
    p.*,
    -- 无销售记录时默认返回0可替换为下面两行
    -- COALESCE(s.items, 0) AS items,
    -- COALESCE(s.orders, 0) AS orders
    s.items,
    s.orders
FROM products p
LEFT JOIN (
    -- 先聚合指定时间范围的所有销售数据,减少关联数据量
    SELECT 
        sku, 
        SUM(amount) AS items, 
        SUM(ARRAY_LENGTH(list, 1)) AS orders
    FROM orders_summary
    WHERE order_date BETWEEN to_timestamp(1633148000000 / 1000.0) 
                         AND to_timestamp(1633676400000 / 1000.0)
        -- 同门店过滤,缩小子查询范围提升效率
        AND store_id = 'ca4172e9-5627-4867-884d-d731895c33fe'
    GROUP BY sku
) s ON p.sku = s.sku
WHERE p.store_id = 'ca4172e9-5627-4867-884d-d731895c33fe';

逻辑说明

  • 采用子查询先完成销售数据的聚合计算,再和产品表关联,避免关联后聚合出现数据重复的问题
  • 使用LEFT JOIN保证没有对应时间段销售记录的产品,也能正常返回产品明细,仅销售字段返回NULL,可通过COALESCE函数将NULL转换为0
  • 子查询中增加同门店过滤条件,减少不必要的计算量,查询性能更高
  • products表的sku有唯一约束,关联后不会出现产品行重复的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:15:04