忽略where子句sql中的某些列

jaxagkaj  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(352)

我创建了一个测试数据库来尝试解决这个问题。我创建了一个sales表,其中包含金额、sale\u made(销售时)和item description。我尝试只使用一个表,我想得到所有已售出商品的总和、已售出商品的数量以及已售出商品总天数的一半。这是我的问题

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子句影响了总金额(amount)和商品销售量。有没有办法让where子句保持在一个不影响前两列的位置?
我曾尝试过自连接表和使用表别名,但没有什么区别

6rqinv9w

6rqinv9w1#

您需要条件聚合:

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使用backticks来转义名称。我不喜欢需要加引号的列别名,但是您正在使用它们,所以我选择了反引号(双引号也可以)。
mysql有一个方便的速记,在数字上下文中将布尔值作为整数处理,“1”表示真,“0”表示假。因此使用 sum() 第三栏。

相关问题