MySQL HAVING

简介

HAVING 字句 主要用于经过Group by之后SELECT中的数据的筛选。

HAVING子句通常与GROUP BY子句一起使用,以根据指定条件过滤组。如果省略了GROUP BY子句,则HAVING子句的行为与WHERE子句类似

注意,HAVING子句将筛选条件应用于每一组行,而WHERE子句将筛选条件应用于每一行

MySQL HAVING 字句实例

有如下示例表:

image

You can use GROUP BY clause to get order numbers, the number of items sold per order, and total sales for each:

SELECT 
    ordernumber,
    SUM(quantityOrdered) AS itemsCount,
    SUM(priceeach*quantityOrdered) AS total
FROM
    orderdetails
GROUP BY ordernumber;
查询结果:

image

Now, you can find which order has total sales greater than 1000 by using the HAVING clause as follows:

SELECT 
    ordernumber,
    SUM(quantityOrdered) AS itemsCount,
    SUM(priceeach*quantityOrdered) AS total
FROM
    orderdetails
GROUP BY ordernumber
HAVING total > 1000;

image

Suppose you want to find all orders that have shipped and total sales greater than 1500, you can join the orderdetails table with the orders table using the INNER JOIN clause and apply a condition on status column and total aggregate as shown in the following query:

SELECT 
    a.ordernumber, status, SUM(priceeach*quantityOrdered) total
FROM
    orderdetails a
        INNER JOIN
    orders b ON b.ordernumber = a.ordernumber
GROUP BY ordernumber, status
HAVING status = 'Shipped' AND total > 1500;

image

HAVING子句仅仅用于当你用GROUP BY 字句来生成高级报告;

例如,您可以使用HAVING子句来回答统计问题,比如查找本月、本季度或今年的总销售额超过10K的订单数量。

参考

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值