忽略where子句sql

时间:2018-07-09 20:42:31

标签: mysql sql select where

我创建了一个测试数据库来尝试解决这个问题。我创建了一个销售表,该销售表中有金额,sale_made(进行销售时)和表中的商品说明。我试图仅通过使用一个表来做到这一点,我想获取整体出售的所有商品的总和,则总体上售出的商品数量为售出商品总天数的一半。这是我的查询

select sum(amount) as 'total amount for all items sold'
,count(amount) as 'Total items sold',
 count(sale_made)as 'half total days' from sales where sale_made BETWEEN "2018-07-02" and "2018-07-05" ;

该查询正在运行,但是where子句影响总和(金额)和已售商品的数量。有什么办法可以让where子句不影响前两列?

我尝试过自动联接表并使用表别名,但这没有什么作用

1 个答案:

答案 0 :(得分:3)

您需要条件聚合:

select sum(amount) as `total amount for all items sold`,
       count(amount) as `Total items sold`,
       sum(sale_made between '2018-07-02' and '2018-07-05') as `half total days`
from sales;

注意:

  • 单引号用于字符串和日期常量(ANSI标准)。这就是为什么我将双引号更改为单引号。
  • MySQL使用反引号转义名称。我不喜欢需要用引号引起来的列别名,但是您正在使用它们,所以我选择了反引号(双引号也可以)。
  • MySQL有一个方便的快捷方式,可将布尔值在数字上下文中视为整数,其中“ 1”表示true,“ 0”表示false。因此,在第三列中使用sum()