You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

DWH SQL查询技术问询:特定年份第三季度销售额查询

查询特定年份第三季度销售额的SQL写法

嗨,这个需求在数据仓库查询里很典型,我给你分几种常见场景来写对应的SQL,你可以根据自己的表结构调整:

场景1:维度表的月份是数字格式(1-12)

假设你的维度表叫dim_date,事实表叫fact_sales,两者通过date_key关联,维度表有year(年份)和month(数字月份)列,事实表的销售额列是sales_amount,那查询语句如下:

SELECT 
    d.year,
    'Q3' AS quarter,
    SUM(f.sales_amount) AS total_sales
FROM 
    fact_sales f
JOIN 
    dim_date d ON f.date_key = d.date_key
WHERE 
    d.year = 2023 -- 把这里替换成你需要查询的年份
    AND d.month IN (7, 8, 9) -- 第三季度对应7、8、9月
GROUP BY 
    d.year;

场景2:维度表的月份是英文名称格式

如果你的维度表存储的是月份名称(比如'July''August'),那只需要调整WHERE子句里的月份条件:

SELECT 
    d.year,
    'Q3' AS quarter,
    SUM(f.sales_amount) AS total_sales
FROM 
    fact_sales f
JOIN 
    dim_date d ON f.date_key = d.date_key
WHERE 
    d.year = 2023 -- 替换目标年份
    AND d.month_name IN ('July', 'August', 'September')
GROUP BY 
    d.year;

更高效的写法(如果维度表有季度列)

很多成熟的数据仓库维度表会直接设计quarter列(存储1-4),这种情况下查询会更简洁:

SELECT 
    d.year,
    d.quarter,
    SUM(f.sales_amount) AS total_sales
FROM 
    fact_sales f
JOIN 
    dim_date d ON f.date_key = d.date_key
WHERE 
    d.year = 2023
    AND d.quarter = 3
GROUP BY 
    d.year, d.quarter;

注意事项

  • 记得把示例中的表名(dim_datefact_sales)和列名(date_keysales_amount等)替换成你实际使用的名称
  • 如果你的事实表和维度表是通过其他键关联(比如日期字符串),也可以调整JOIN条件,但用代理键(比如date_key)在数据仓库中性能更好
  • 如果需要按月份拆分第三季度的销售额,只需要在SELECTGROUP BY里加上月份列即可

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

火山引擎 最新活动