sql - 如果没有销售,则为零

标签 sql postgresql

我的问题与所附帖子中的问题非常相同,只是我的查询中需要有一个与表 1 中的周相关的 where 子句。我的 table2 (t2) 只有一列(名称)并且没有日期/时间列,而 table1 (t1) 有名称、销售额和星期。我想为 Sean 返回零,因为他在 2017 年 1 月 1 日结束的那一周没有任何销售额。

Create a third table from two tables

select * from table2:

Names

Maggie
Colleen
Laura
Sean

select * from table1:

Names               Sales                Week
Maggie              1800                 01/01/2017
Colleen             2000                 01/01/2017  
Laura               4000                 01/01/2017
Sean                1500                 12/18/2016   

select t2.Name, coalesce(t1."Employee Sales",0) "Employee Sales"
from emphis t2 left outer join
(select Name, sum(Sales) "Employee Sales"
from empdata
group by Name) t1
on t1.Name = t2.Name

Names              Employee Sales              
Maggie              1800                 
Colleen             2000                 
Laura               4000                 
Sean                1500                   

我要找的结果:

Names              Employee Sales            
Maggie              1800                 
Colleen             2000                 
Laura               4000                 
Sean                 0 

select t2.Name, coalesce(t1."Employee Sales",0) "Employee Sales"
from emphis t2 left outer join
(select Name, sum(Sales) "Employee Sales"
from empdata
group by Name) t1
on t1.Name = t2.Name
where t1.Week = date_trunc('week', now())::date - 1

postgreSQL 错误:

ERROR:  column t1.Week does not exist
LINE 7: where t1.Week = date_trunc('week', now())::date - 1

我用

where t1.Week = date_trunc('week', now())::date - 1

自动化,这样我就不需要更改每个星期天的日期。

最佳答案

在子选择中移动“周”条件。这有两个好处:

  1. 如果某人有多个星期的销售额,您将获得该周的部分销售额。
  2. 如果他们没有销售额为 0 美元,他们将出现在您的列表中

像这样:

select t2.Name,
    coalesce(t1."Employee Sales",0) "Employee Sales"
from emphis t2 
left outer join (
    select Name, 
        sum(Sales) "Employee Sales"
    from empdata
    where Week = date_trunc('week', now())::date - 1
    group by Name
    ) t1
on t1.Name = t2.Name

关于sql - 如果没有销售,则为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41494236/

相关文章:

sql - 如何通过 group by 和子查询计算来选择数据?

sql - 存储过程使用游标返回多个查询结果

mysql - 使用 sql 将一些列值放入新列中

database - 为什么在 postgresql 中授予权限或更改所有权时找不到数据库和角色

php - 在 php 中解密 salesforce 自定义字段

java - QueryDSL JPA 和 PostgreSQL 的集合查询问题

sql - 更新语句 - 捕获错误并继续其余的

SQL Server - PIVOT - 两列转换为行

sql - 如何从数据库中逐一返回样本行

ruby-on-rails - 连接表的 ListView