我必须生成一个结果集,它返回每年中销售额最高的月份。感兴趣的表是产品表、订单表和日期-时间表。此表结构的当前ERD为x1c 0d1x
这是我的问题我尝试创建一个公共表表达式,它显示存储在数据库中的所有年份和月份的每年每月总销售额,即
`WITH sales_year_and_month AS
(SELECT
year,
month,
SUM(orders_table.product_quantity * dim_products.product_price_in_£) AS total_sales
from public.dim_date_times
JOIN public.orders_table on public.orders_table.date_uuid = public.dim_date_times.date_uuid
JOIN public.dim_products on public.dim_products.product_code = public.orders_table.product_code
GROUP BY year, month
ORDER BY total_sales DESC)`
字符串
它返回沿着此
的行的内容
现在这个表我想选择出一个特定的一年的月份,这对销售贡献最大?
我尝试了多种方法,仍然没有能够回答如何正确地做到这一点,我想这可能是一个问题,我如何从根本上理解这些主题。有人愿意分享他们将如何处理这个问题吗?
2条答案
按热度按时间6qftjkof1#
你可以使用窗口函数如row_number()来选择销售最高的月份。
字符串
unhi4e5o2#
我相信你是在寻找每年最高销售额的年份,月份和total_sales的列表。使用
row_number() over()
可以方便地做到这一点。对于每个partition
,数字从1开始,order by DESC
确定哪一行被分配1(最高销售额)。然后我们只过滤所有等于1的行号。字符串