gpt4 book ai didi

sql - 为 WHERE 序列中的每个元素向 SQL 查询添加行

转载 作者:行者123 更新时间:2023-11-29 11:32:22 25 4
gpt4 key购买 nike

我有一个如下所示的 SQL 查询:

SELECT store_id, SUM(quantity_sold) AS count
FROM sales_table
WHERE store_id IN ('Store1', 'Store2', 'Store3')
GROUP BY store_id;

这会为每个在 sales_table 中有行的商店返回一行,但不会为那些没有的商店返回一行。我想要的是每个商店一行,如果没有记录,则 0 表示 count

假设我无权访问 stores 表,我该怎么做?

最佳答案

with stores (store_id) as (
values ('Store1'), ('Store2'), ('Store3')
)
select st.store_id,
sum(sal.quantity_sold) as cnt
from stores st
left join sales_table sal on sal.store_id = st.store_id
group by st.store_id;

如果您确实有一个 stores 表,那么只需对该表进行外部连接,而不是使用公共(public)表表达式(with .. ).

这也可以在没有 CTE(公共(public)表表达式)的情况下编写:

select st.store_id, 
sum(sal.quantity_sold) as cnt
from (
values ('Store1'), ('Store2'), ('Store3')
) st
left join sales_table sal on sal.store_id = st.store_id
group by st.store_id;

(但我觉得CTE版本更容易理解)

关于sql - 为 WHERE 序列中的每个元素向 SQL 查询添加行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13202809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com