使用 1 SQL 查询连接 3 个表并找到为每个客户群产生最多收入的产品类别

Use 1 SQL query to join 3 tables and find the category of products that generates the most revenue for each customer segment

我正在为以下查询使用 SQLite3。

我有一个名为“products”的 table,看起来像这样:

我有一个名为“交易”的 table,看起来像这样:

我有一个名为“段”的 table,如下所示:

对于每个活跃的细分市场,我想找到产生最高收入的类别。

我想我知道如何在 3 个不同的查询中执行此操作。

create table table1 as
SELECT s.seg_name, p.category, t.item_qty * t.item_price as revenue
from segments s
JOIN
transactions t
on s.cust_id = t.cust_id
JOIN products p
on p.prod_id = t.prod_id
where s.active_flag = 'Y'
order by s.seg_name, p.category
;

create table table2 as
select seg_name, category, sum(revenue) as revenue
from table1
group by seg_name, category;

select seg_name, category, max(revenue) as revenue
from table2
group by seg_name;

如何在 1 个查询中完成

这是一种方法:

select seg_name,category,revenue
from (
select
    s.seg_name,
    p.category,
    sum(t.item_qty * t.item_price) as revenue,
    rank() over (partition by seg_name order by sum(t.item_qty * t.item_price) desc) rn 
from segments s
join transactions t on s.cust_id = t.cust_id
join products p on p.prod_id = t.prod_id
where s.active_flag = 'Y'
group by seg_name, p.category
) t where rn = 1