【问题标题】:ignore certain columns in where clause sql忽略where子句sql中的某些列
【发布时间】:2018-07-09 20:42:31
【问题描述】:

我创建了一个测试数据库来尝试解决这个问题。我创建了一个销售表,其中包含金额、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 子句不影响前两列?

我尝试过自加入表并使用表别名,但这并没有什么不同

【问题讨论】:

    标签: mysql sql select where


    【解决方案1】:

    你想要条件聚合:

    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()

    【讨论】:

    • 非常感谢您快速易懂的回答,轻松解决了我的问题
    猜你喜欢
    • 2021-01-08
    • 2020-01-28
    • 1970-01-01
    • 1970-01-01
    • 2017-05-31
    • 2017-11-05
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    相关资源
    最近更新 更多