mysql - SQL查询: Indicate if a row had a value of 0

标签 mysql sql google-bigquery

如果我有一个表记录每天销售的产品数量 - 如果售出 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/

相关文章:

php - PHP 中的密码验证

php - 更新时转空值

php - 显示正确的记录

mysql - 允许所有 MySQL 数据库字段可为空 - Laravel 5.3

mysql - 按特定字符排序

google-bigquery - 错误处理作业 : Project has not enabled BigQuery

sql - 查询不进行索引查找或扫描

sql - 为什么 SELECT DISTINCT 返回两次相同的值?

python - BigQuery API 查询作业针对现有数据集返回 404

google-bigquery - 如何删除字符串的第一个字符并将其余值视为 BigQuery 中的整数