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

前言

书接上回大数据分析入门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.mfbz.cn/a/591821.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue快速入门(五十一)历史模式

注释很详细,直接上代码 上一篇 新增内容 历史模式配置方法 默认哈希模式,历史模式与哈希模式在表层的区别是是否有/#/ 其他差异暂不深究 源码 //导入所需模块 import Vue from "vue"; import VueRouter from "vue-router"; import m…

全方位解析Node.js:从模块系统、文件操作、事件循环、异步编程、性能优化、网络编程等高级开发到后端服务架构最佳实践以及Serverless服务部署指南

Node.js是一种基于Chrome V8引擎的JavaScript运行环境,专为构建高性能、可扩展的网络应用而设计。其重要性在于革新了后端开发,通过非阻塞I/O和事件驱动模型,实现了轻量级、高并发处理能力。Node.js的模块化体系和活跃的npm生态极大加速了开发…

Centos 7.9 配置VNCServer实现远程vnc连接

文章目录 1、Centos安装图形界面1.1、安装X Windows System图形界面1.2、安装GNOME图形界面 2、VNC SERVER配置2.1、VNC SERVER安装2.2、VNC SERVER配置1)创建vnc配置文件2)修改配置文件内容3)完整配置文件参考 2.3、设置vnc密码2.4、配置防火…

C++基础——输入输出(文件)

一、标准输入输出流 C 的输入输出是程序与用户或外部设备(如文件、网络等)之间交换信息的过程。 C 提供了丰富的标准库来支持这种交互,主要通过流的概念来实现。 流:抽象概念,表示一连串的数据(字节或字…

c语言从入门到函数速成(2)

温馨提醒:本篇文章适合人群:刚学c又感觉那个地方不怎么懂的同学以及以及学了一些因为自身原因停学一段时间后又继续学​​​c的学 好,正片开始! 数组 概念:数组中存放的是1个或者多个数据,但是数组元素个…

频率和转速转换功能块(CODESYS ST源代码)

1、转速和频率转换功能块 转速和频率转换功能块(CODESYS ST源代码)-CSDN博客文章浏览阅读10次。1、转速/频率常用转换关系转速/频率/线速度/角速度计算FC_200 plc计算角速度-CSDN博客文章浏览阅读3.2k次。https://rxxw-control.blog.csdn.net/article/details/138438864 1、转…

企业计算机服务器中了rmallox勒索病毒怎么处理,rmallox勒索病毒处理建议

在网络技术不断发展的时代,网络在企业中的应用广泛,可以为企业带来更多的便利,大大提升了企业的生产效率,但网络作为虚拟世界,在为企业提供便利的同时,也为企业数据安全带来严重威胁。近期,云天…

C++入门系列-基于范围的for循环(C++11)和指针空值nullptr(C++11)

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 基于范围的for循环 范围for的语法 在C98中如果要遍历一个数组,可以按照以下方式进行: void TestFor() {int array[] { 1,2,3,4,5 };for (int i 1; i …

VmWare 虚拟机没有网络解决办法

由于最近需要,装了个VM虚拟机,但是突然发现本机有网络,虚拟机却没有网络,更换了虚拟机的网络设置,都尝试过了 都不管用, 最后尝试了这种方法完美解决 还原网络默认设置 首先还原虚拟网络编辑器设置 启动V…

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

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

FFmpeg计算图像的SSIM的原理

SSIM算法基于HVS更擅长从图像中提取结构信息的事实,并且利用结构相似度来计算图像的感知质量。 在Z. Wang等人的论文Multi-scale structural similarity for image quality assessment中也提到, S S I M SSIM SSIM算法要好于当时的其它的感知图像质量指标…

Java-I/O-编写程序实现从文件中读取数据

定义一个类FileUtil,在FileUtil中定义一个方法 String readFromFile(File file),该方法从指定的文件中读取数据,并将读取到的数据以字符串的格式返回。 FileUtil类的接口定义: class FileUtil{ String readFromFile(File file){…

强大而简洁:初学Python必须掌握的14个单行代码

Python的魅力与单行代码的重要性 Python,作为一种高级编程语言,自诞生以来就以其简洁、易读、易学的特性而广受开发者喜爱。其魅力不仅在于其强大的功能和广泛的应用领域,更在于其能够用简洁的代码实现复杂的功能,这种能力在很大…

nodejs实战——搭建websocket服务器

本博客主要介绍websocket服务器库安装,并举了一个简单服务器例子。 服务器端使用websocket需要安装nodejs websocket。 cd 工程目录 # 此刻我们需要执行命令: sudo npm init上述命令创建package.json文件,系统会提示相关配置。 我们也可以使…

matlab绘制时间序列图,横坐标轴如何标注为月-日

Excel表格中有类似于如下 年月日对应的数据 导入 matlab中,为数值矩阵;了解该表格中的时间跨度为从2021年1月2日至2021年12月31日,中间没有缺失,绘图代码: % clear; timespan1[20210102 20211231]; datenn1datenum(da…

Visual studio调试技巧

Visual studio调试技巧 bug是什么?Debug和ReleaseDebugRelease 如何调试VS调试快捷键调试过程中查看程序信息查看临时变量的值查看内存信息查看调用堆栈查看汇编信息查看寄存器信息 编译常见错误编译型错误链接型错误运行时错误 bug是什么? bug的英文释…

用例设计规范示例

一个好的用例设计,可以让任何一个执行测试的测试人员都能够容易理解,好操作、易执行、无歧义。这就需要有一个用例设计规范。 下面是一组用例设计规范的示例。 用例编号命名规范化 用例具有规范的、统一的、唯一的标识,有助于实现对用例的…

VMware | 虚拟机开启摄像头

VMware | 虚拟机开启摄像头 打开主机摄像头功能 首先请确保主机摄像头打开。 若图像显示正常则可以。 确保主机虚拟机USB服务开启 进入系统服务界面,确保 VMware USB … 处于开启状态,如果没开启,将它打开。 开启虚拟机摄像头 在 V…

以信息挖掘为关键技术的智慧校园建设

随着信息技术的快速发展,数据信息资源以井喷的姿态涌现。数据信息的大量涌现给人们带来丰富的数据信息资源,但面对海量的信息资源时,加大了人们对有效信息资源获取的难度,数据挖掘技术正是这一背景下的产物,基于数据挖…

C语言/数据结构——每日一题(分割链表)

一.前言 今天在LeetCode觉得很不错,想和大家们一起分享这道链表题——分割链表:https://leetcode.cn/problems/partition-list-lcci废话不多说,让我们直接进入正题吧。 二.正文 1.1题目描述 1.2题目分析 大致思路:我们可以通过…
最新文章