当前位置: 首页 > news >正文

第八章 - 数据分组( group by , having , select语句顺序)

第八章 - 数据分组 group by

    • 数据分组
    • 过滤分组 having
    • 分组排序
    • groub by语句的一些规定
    • select语句顺序

数据分组

  • 在使用group by进行分组时,一般都会配合聚合函数一起使用,实现统计数据的功能。
  • 比如下面例子,需要按性别计算人数。按性别进行分组然后通过count()函数来计算每个性别有多少条数据。
selectsex as `性别`,count(sex) as `人数`
fromtest.titanic
group bysex

在这里插入图片描述

  • 在比如计算不同性别中年龄最大的是多少,年龄最小的是多少,年龄平均值是多少(保留两位小说)。
  • round(x,y) 为保留小数位数函数,括号内两个参数,逗号左边的x表示传入的具体数值,逗号右边的y表示要保留小数的位数是几位。小数采用四舍五入。
selectsex as `性别`,max(age) as `最高年龄` ,min(age) as `最小年龄`,# 计算均值并保留两位小数round(avg(age),2) as `平均年龄`
fromtest.titanic
group bysex

在这里插入图片描述

过滤分组 having

  • having 非常类似与 where,由于where的执行优先级要高于group by,要实现group by分组之后再过滤就需要用到having来进行分组过滤了。
  • 下面例子实现,票价Fare,卖出去5张以上的票都有哪些且卖出去的多少张。
select
Fare,
count(Fare)
from
test.titanic
group by
Fare
having
count(Fare) > 5

在这里插入图片描述

分组排序

  • 再前面的例子中输出的结果是没有排序的,所以看起来有些麻烦,而且也不能就这么把数据给别人看。如果在分组过滤后再把得出的结果进行排序,哪看起来就会舒服一些。
  • 如何实现分组排序呢,只需要再后面再添加order by进行排序就可以了,如下
selectFare,count(Fare) as `数量`
fromtest.titanic
group byFare
havingcount(Fare) > 5
order by# 对结果进行倒序排列`数量` desc
  • 在order by中可以直接使用as设置的别名。

groub by语句的一些规定

  • group by语句可以包含任意数目的列。
  • 如果使用了多个列的分组,在建立分组时,指定的所有列都一起计算,不能从个别的列取回数据。
  • 使用group by 分组时,每个列都必须是有效的列名或是有效的表达式(不能是聚合函数),如果在select中使用表达式,那么在group by中必须指定相同的表达式,不能使用别名。
  • 除了聚合函数计算语句外,select语句中的每个列都必须在group by语句中给出。
  • 如果分组列中具有null值,则null将作为一个分组返回,如果类中有多行null值,他们将分为一组。
  • group by必须出现在where之后,order by 之前。

select语句顺序

在使用select查询语句时,系统执行时遵循下面的次序,次序不对系统就会报错无法执行查询。

  • select
  • from
  • where
  • group by
  • having
  • order by
  • limit
http://www.lryc.cn/news/10355.html

相关文章:

  • Git(GitHub,Gitee 码云,GitLab)详细讲解
  • 策略模式(Strategy Pattern)
  • 《Qt6开发及实例》6-2 Qt6基础图形的绘制
  • LeetCode 382. 链表随机节点
  • iOS开发AppleDeveloper中给别人授权开发者权限后,对方一直显示不了我的开发账号team
  • FreeRTOS数据类型和编程规范
  • 【python知识】win10下如何用python将网页转成pdf文件
  • C语言常见关键字
  • 【MT7628】固件开发-SDK4320添加MT7612E WiFi驱动操作说明
  • 如何从手工测试进阶自动化测试?阿里10年测开经验分享...
  • C++复习笔记11
  • 【MT7628】固件开发-SDK4320添加MT7628 WiFi驱动操作说明
  • C#开发的OpenRA游戏加载界面的实现
  • 渲染农场优势是什么_云渲染农场怎么用?
  • SoapUI、Jmeter、Postman三种接口测试工具的比较分析
  • Python内置函数 — sort,sorted
  • mysql事务隔离级别
  • 【C++】string类(下)
  • Elasticsearch: Prefix queries - 前缀查询
  • GEE学习笔记 七十七:GEE学习方法简介
  • 20基于主从博弈的智能小区代理商定价策略及电动汽车充电管理MATLAB程序
  • 长按power键,点击重启按钮,系统重启流程一
  • 数据的TCP分段和IP分片
  • HTML中嵌入B站视频
  • Mars3D Studio 的使用方法
  • Flutter For Web实践
  • 【神级Python代码】作为技术xiao白如何制作一款超炫酷的黑客主题代码雨?牛逼就完了。(源码分享学习)
  • 供应链挑战迎刃而解!桑迪亚国家实验室使出“量子杀手锏”
  • java程序设计-ssm博客管理系统
  • 从0到1一步一步玩转openEuler--17 openEuler DNF(YUM)检查更新