mysql - 忽略where子句sql中的某些列
问题描述
我创建了一个测试数据库来尝试解决这个问题。我创建了一个销售表,其中包含金额、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 子句不影响前两列?
我已经尝试自加入表并使用表别名,但这并没有什么区别
解决方案
你想要条件聚合:
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”表示真,“0”表示假。因此使用
sum()
第三列。
推荐阅读
- python - 在 IBM Watson node.js 聊天机器人中运行 python 脚本
- c++ - 传递 const 丢弃限定符
- laravel-5 - 登录后如何限制用户
- c# - 我想在选中复选框时显示数据库中的图像
- java - HttpsURLConnection openConnection 查询
- javascript - 将图像从客户端上传到 NodeJS 服务器并将其内部保存在服务器上?
- matlab - matlab中的自适应腐蚀和膨胀
- php - Apache 显示默认索引页面而不是虚拟主机中的页面
- spring-boot - 在 Spring Boot REST API 中上传文件
- excel - 如何使用c#将数据表转换为Excel