大数据分析入门之10分钟掌握GROUP BY语法

devtools/2024/10/18 8:31:57/

前言

书接上回大数据分析入门10分钟快速了解SQL。
本篇将会进一步介绍group by语法。

基本语法

SELECT column_name, aggregate_function(column_name)
FROM table_name
GROUP BY column_name
HAVING condition

假设我们有students表,其中有id,grade_number,class_number,name4个字段

  • 如果需要统计每个年级(grade)有多少人,那么SQL是
SELECT grade_number, count(id) as cnt
FROM students
GROUP BY grade_number
  • 如果需要统计每个年级(grade)的每个班级(class)有多少人,那么SQL是
SELECT grade_number, class_number, count(id) as cnt
FROM students
GROUP BY grade_number,class_number -- GROUP BY 支持多列
  • 如果你想知道哪些班级超过了50人,那就需要用到HAVING
SELECT grade_number, class_number, count(id) as cnt
FROM students
GROUP BY grade_number,class_number
HAVING count(id) > 50 -- 对聚合结果进行过滤

进阶用法

刚刚只展示了1个count函数,实际可用的聚合函数有很多。

以SparkSQL为例

  • 常见的数学函数
函数名作用
max最大值
min最小值
count计数
sum求和

“数学函数”比较简单,就不用举例子了

  • 常见的集合函数
函数名作用
collect_list将所有结果聚合到一个list(一种不去重的数据类型)
collect_set将所有结果聚合到一个set(一种去重的数据类型)

举个例子,想知道每个班级有哪些人

SELECT grade_number, class_number, collect_list(id) as cnt
FROM students
GROUP BY grade_number,class_number -- GROUP BY 支持多列

结果将会是

1年级,1班, [‘张三’,'李四']
...
1年级, 8班, ['秦朗']
...
  • 抽样函数

聚合函数能搭配distinct来使用,例如count(distinct name)统计name去重后的结果。

不过大数据场景一般少用count (distinct name), 会用approx_count_distinct(name)来替代.

因为大数据的计算比较慢,抽样可以更快地得到一个近似值。

总结

聚合语法主要在于了解各种聚合函数,每个引擎都有自己的函数手册可以查阅,下面就是SparkSQL的函数手册。
在这里插入图片描述


http://www.ppmy.cn/devtools/37035.html

相关文章

CoPilot 产品体验:提升 OpenNJet 的控制管理和服务提供能力

文章目录 前言系统架构介绍CoPilot 配置CoPilot 插件规范 体验 CoPilot 实例CoPilot: Broker 实例CoPilot: Ctrl 实例 开发其他语言编写的 CoPilot目标主要思路具体实现执行 go 程序代码 功能扩展总结 前言 CoPilot 是 OpenNJet 的一个重要组成部分,它在 Master-Wo…

Prompt提示词教程 | 提示工程指南 | 提示词示例 入门篇

在上一节中,我们介绍并给出了如何赋能大语言模型的基本示例。如果还没看而且是刚入门的同学建议看下,有个基本概念。 Prompt提示词教程 | 提示工程指南 | 提示工程简介https://blog.csdn.net/HRG520JN/article/details/138523705在本节中,我…

基于springboot的汽车资讯网站源码数据库

基于springboot的汽车资讯网站源码数据库 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了汽车资讯网站的开发全过程。通过分析汽车资讯网站管理的不足,创建了一个计算机管理汽车资讯网站的方案。文章介…

【Vue3源码学习】— CH3.4 baseCreateRenderer 详解

baseCreateRenderer 详解 1. 源码结构分析2. optionsoptions传入说明3. 方法归类4. 关键职责4.1 初始化和环境配置4.2 底层 DOM 操作方法的设置4.3 核心渲染逻辑4.4 生命周期和更新机制4.5 水合功能的支持5. 关键流程解析5.1 方法定义5.2 渲染触发5.3 渲染细节处理6. 总结接下来…

智慧监测IN!计讯物联筑牢高速滑坡预警“安全锁”

在现代社会,高速公路以其高速、便捷的特性,早已成为连接城市与地区之间的重要纽带,承载着日益增长的车流和人流。然而,随着车流量的激增,高速公路面临的运营压力和安全挑战也随之加大,其中滑坡风险尤为突出…

力扣---二叉树的锯齿形层序遍历

给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 示例 1: 输入:root [3,9,20,null,null,15,…

【mysql】深入探索mysql中的各种约束条件

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

利用干扰源模型确定多通道盲源分离

在现实世界的应用中,通常需要从多个麦克风采集的混合信号中提取出感兴趣的源信号。源分离技术主要有两种范式:波束形成(beamforming)和基于独立成分分析(ICA)的多通道盲音频源分离(MBASS&#x…