如果我有一个表记录每天销售的产品数量 - 如果售出 0 件产品则不记录 - 我将如何识别我的所有产品一天的销售量为 0?
咖啡 table 示例
Date Item QuantitySold
Jan 1 coffee 4
Jan 1 tea 1
Jan 2 tea 3
Jan 3 coffee 2
Jan 3 tea 4
期望的输出是这样的。到目前为止,我可以获得一个列出每天和销售数量的版本,但无法弄清楚是否有办法也“标记”产品。
Item TotalSold SoldDaily
coffee 6 FALSE
tea 8 TRUE
这是我的粗略起点 - JOIN 是尝试强制显示所有日期,但它仍然跳过 1 月 2 日的咖啡行。从那里开始,我无法弄清楚我将如何执行下一步 - 我尝试了一些情况,但没有结合在一起。
with dates as (select distinct date from cafetable)
select date,
product,
sum(quantitysold) as quant_sold,
min(quantitysold) as min_sold
from dates c
left join cafetable d on d.date=c.date
group by 1,2
我认为我没有很好地表达这一点。我每天使用这个表十几次,我觉得这个查询已经烧坏了我的大脑。
最佳答案
您可以在此处使用断言所有日期都存在或不存在的逻辑:
以下是 BigQuery 标准 SQL:
select
c.date,
d.product,
sum(quantitysold) as quant_sold,
min(quantitysold) as min_sold,
case when count(distinct c.date) = (select count(distinct date) from dates)
then TRUE else FALSE end AS SoldDaily
from dates c
left join cafetable d
on d.date = c.date
group by
1, 2;
关于mysql - SQL查询: Indicate if a row had a value of 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64905865/