我有一个数据库,需要从中提取一些数据,以便在python脚本中使用。我是sql的新手,只知道基础知识 这就是我想要做的事情:
if exists (
select date, sum(amount)
from transactions
where category = 'Food'
group by date
)
else
select date, 0
对于transaction
表中的所有日期,我想获得 Food 类别的日期,总和(金额)。如果没有与 Food 类别的交易,我想获得 date , 0 (因为 sum(amount)那天食物是0)。
我目前的代码是
select date, sum(amount)
from transactions
where category = 'Food'
group by date
但是对于没有任何 Food 交易的日期,它不包含 date , 0 行。
我应该如何重写它以使其有效?
我已经阅读了this个问题,但答案是布尔数据专有,没有提供足够的细节而无法推广。
答案 0 :(得分:1)
您的问题并不清楚您希望获得哪些日期0
:您不能只列出数据中没有的所有日期,数量无限!但是,我想您的意思是在是交易的那些日期获得date, 0
,但没有一个具有类别'Food'
。在这种情况下,您可以这样做:
select date, sum(case when category = 'Food' then amount else 0 end)
from transactions
group by date