MYSQL HAVING的用法和训练

MYSQL HAVING的用法和训练

HAVING - 提示

HAVING 是过滤被聚合的查询的 “整洁”方式,但是通常采用子查询的方式来实现。本质上,只要你想对通过聚合创建的查询中的元素执行 WHERE 条件,就需要使用 HAVING

  • HAVING 总是使用在GROUP BY 语句后面

 

练习:HAVING

经常你会对 WHEREHAVING 之间的差别感到困惑。关于 HAVINGWHERE 的语句,请选出以下所有正确语句。

  • WHERE 子集根据逻辑条件对返回的数据进行筛选。

  • WHERE 出现在 FROMJOINON 条件之后,但是在 GROUP BY 之前。

  • HAVING 出现在 GROUP BY 条件之后,但是在 **ORDER BY 条件之前。

  • HAVINGWHERE 相似,但是它适合涉及聚合的逻辑语句。

所有这些语句都正确。这些语句确保你知道这些语句在查询中都位于哪个位置,以及为何要使用特定的语句。’

问题:

  1. 有多少位销售代表需要管理超过 5 个客户?

  2. 有多少个客户具有超过 20 个订单?

  3. 哪个客户的订单最多?

  4. 有多少个客户在所有订单上消费的总额超过了 30,000 美元?

  5. 有多少个客户在所有订单上消费的总额不到 1,000 美元?

  6. 哪个客户消费的最多?

  7. 哪个客户消费的最少?

  8. 哪个客户使用 facebook 作为与消费者沟通的渠道超过 6 次?

  9. 哪个客户使用 facebook 作为沟通渠道的次数最多?

  10. 哪个渠道是客户最常用的渠道?

解决方案:HAVING

  1. 有多少位销售代表需要管理超过 5 个客户?

SELECT s.id, s.name, COUNT(*) num_accounts
FROM accounts a
JOIN sales_reps s
ON s.id = a.sales_rep_id
GROUP BY s.id, s.name
HAVING COUNT(*) > 5
ORDER BY num_accounts;

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值