SQL进阶学习-mysql03

1、DISTINCT关键字
DISTINCT用于筛选相同值只显示一次,如:

COUNT(client_id) AS total_records

在这里插入图片描述
此处应为有client_id相同的值都计入在内,我们为了每个id只计数一次:

COUNT(DISTINCT client_id) AS total_records

在这里插入图片描述
2、HAVING
HAVING子句可以在我们分组之后(生成的列)筛选数据,且HAVING之后的条件必须在SELECT子句中出现;
WHERE子句可以在我们分组之前(现有的列)筛选数据;
两者都是可以用AND连接多个条件;

3、ROLLUP
ROLLUP运算符只能应用于聚合类的列(如sum())

SELECT 
	state,
    city,
    SUM(invoice_total) AS total_sales
FROM invoices i
JOIN clients c USING (client_id)
GROUP BY state,city WITH ROLLUP

在这里插入图片描述
ROLLUP对每个州各个城市进行了一个汇总,最后所有州也进行了汇总。
注:ROLLUP只在mysql中有效,其他数据库引擎如sql server、Oracle无效,但也有其他方式。

4、GROUP BY后面不能用列别名,如:

SELECT 
	pm.name AS payment_method,
    SUM(amount) AS total
FROM payments p
JOIN payment_methods pm
	ON p.payment_method = pm.payment_method_id
GROUP BY pm.name WITH ROLLUP

此处GROUP BY要用pm.name而不能用payment_method。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值