SQl基础_对表进行分组

学习重点

  • group by 可以与聚合函数共同使用
  • 聚合函数中包含NULL时,在结果中会以“不确定”行(空行)的形式表现出来。
  • 聚合函数与group by 时的注意事项4点:
    ①只能写在select 子句之中
    ②group by 子句中不能使用select子句中列的别名
    ③group by 子句的聚合结果是无序的
    ④where 子句中不能使用聚合函数

group by 子句
该句子对表进行切分,将目标列进行分组处理,相同的即为一组。
例子:

select shohin_hunrui,count(*)
	from shohin
	group by shohin_bunrui;

含义:在表shohin中对列shohin_hunruin 进行分组展示,并且计算每组因子个数。
另外:
group by 与select 一样 可以通过逗号指定多列。

子句书写顺序:1.select→2.from→3.where→4.group by
顺序不可改变也不能互相替换
(group by 与 distinct 性能对比)
https://www.cnblogs.com/zox2011/archive/2012/09/12/2681797.html

使用where时 group by 的执行结果
使用where进行聚合处理时,会先根据where指定的条件进行过滤,然后再进行聚合处理。
例子:

select shiire_tanka,count(*)
	from shohin
	where shohin_bunrui = ‘衣服’
	group by shiire_tanka;

含义:在表shohin中查询 列shohin_bunrui中 值为衣服的数据,并且对shiire_tanka内容进行分组处理,count(*),输出各组因子数量。
【语句运行顺序】
from→where →group by→select

与聚合函数和group by有关的常见错误
△ 常见错误①
select中书写多余的列,select中只能存在以下是那种元素:

  • 常熟
  • 聚合函数
  • group by 中指定的列名(也就是聚合键)

错误示范:

select a,b
	from ttt
	group by a;

这串代码运行会报错,因为group by 的是a ,所以在select 中作为聚合键的a可以但是除此之外的b 则不可以。
提示:使用group by时,select不能出现聚合键之外的列名。

△ 常见错误②
group by 中写了列名的别名。
错误示范:
select shohin bunrui as sb,count(*)
from shohin
group by sb
上述 sb 这种情况便会出现错误,此错误见【语句运行顺序】
from→where →group by→select
提示:group by 中不能是用select中定义的别名。

△ 常见错误③
group by 的结果能够排序吗?
答案是否定的,该子句查询结果显示是无序的!

△ 常见错误④
在where中使用聚合函数
错误示范:
select shohin_bunrui,count()
from shohin
where count(
) = 2
group by shohin_bunrui;
提示:上述代码中count(*)属于聚合函数,代码运行报错。
只有select 和 having 中能够使用聚合函数。
在这里插入图片描述在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值