SQL - 汇总与分组

news/2024/10/18 14:16:00/
  • 聚合函数
    • MySQL自带一堆内置函数,其中一些叫聚合函数,用它们汇总数据,因为它们取某一列的值并聚合它们,导出一个单一值。并且聚合函数只会运行非空值,如果列中有的值是null,它不会被算在内。
    • max(), min(), avg(), sum(), count(),count(*) 返回表中的所有记录数,count(distinct client_id)具有去重功能,默认不去重
    • sql">select 'first half of 2019' as date_range,sum(invoice_total) as total_sales,sum(payment_total) as total_payment,sum(invoice_total-payment_total) as want
      from invoices
      where invoice_date between '2019-01-01' and '2019-06-30'	-- 控制范围,也就是筛选union
      select 'second half of 2019' as date_range,sum(invoice_total) as total_sales,sum(payment_total) as total_payment,sum(invoice_total-payment_total) as want
      from invoices
      where invoice_date between '2019-07-01' and '2019-12-31'union
      select 'total' as date_range,sum(invoice_total) as total_sales,sum(payment_total) as total_payment,sum(invoice_total-payment_total) as want
      from invoices
      where invoice_date between '2019-01-01' and '2019-12-31'

  • group by 子句
    • group by 子句在SQL查询中用于将结果集按一个或多个列进行分组。它的主要作用是将具有相同值的行归为一组,以便对每组数据进行聚合计算(如求和、计数、平均值等)
    • sql">-- group by 分组
      select date,name as payment_method,sum(amount) as total_payments
      from payments p
      join payment_methods pm on p.payment_method=pm.payment_method_id
      group by date,payment_method
      order by date

  • having 子句
    • 将结果集按一个或多个列分组后,再次筛选数据,但是筛选的列名必须是是在select中的
    • sql">-- having 再次筛选
      select date,name as payment_method,sum(amount) as total_payments
      from payments p
      join payment_methods pm on p.payment_method=pm.payment_method_id
      group by date,payment_method
      having total_payments>10
      order by date

  • rollup 运算符
    • 在分组后,每个组都有用聚合函数运算的值,对应的每个组的汇总和整个结果集的汇总可以使用到 with rollup,如group by client_id with rollup,不过这列名不能使用别名
    • sql">-- rollup运算符
      select 
      client_id,
      sum(invoice_total) as total_sales
      from invoices
      group by client_id with rollup


http://www.ppmy.cn/news/1512355.html

相关文章

分析 Runtime.getRuntime() 执行阻塞原因

1、起因 线上系统通过 git 命令执行的方式获取远程仓库分支,一直运行正常的接口,突然出现超时,接口无法响应,分析验证发现只有个别仓库获取分支会出现这种情况,其他都还是可以正常获取到分支结果信息。 2、分析异常原…

智云-一个抓取web流量的轻量级蜜罐docker一键启动

智云-一个抓取web流量的轻量级蜜罐docker安装教程 github地址 https://github.com/xiaoxiaoranxxx/POT-ZHIYUN docker快速启动(v1.4) git clone https://github.com/xiaoxiaoranxxx/POT-ZHIYUN.git cd POT-ZHIYUN docker-compose up -d默认映射到80和8080端口 mysql不对外开放…

HiveSQL实战——大数据开发面试高频SQL题

查询每个区域的男女用户数 0 问题描述 每个区域内男生、女生分别有多少个 1 数据准备 use wxthive; create table t1_stu_table (id int,name string,class string,sex string ); insert overwrite table t1_stu_table values(4,张文华,二区,男),(3,李思雨,一区,女),(1…

勇闯机器学习(第三关-特征工程)

以下内容皆为原创,制作不易,请帅锅、镁铝点点赞赞和关注吧❥(^_^) 一.提问环节 机器学习是什么? 机器学习就是通过自动分析大量数据去建立模型,训练模型,预测数据。 这么好记的概念,你应该记住了吧&#x…

Emacs28.x版本之重要特性及用法实例(一百六十一)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列…

Ansible可视化管理之web界面集成使用探究(未完待续)

一、前言 因某集成商管理的客户资源涉及4A接入管控要求,其中密码必须3个月更新一次,随着纳管主机的数量增多,手动去修改密码变得不现实,考虑无侵入性和资源耗用,便捷性等因素,首先选用Ansible作为此需求的…

每天一个数据分析题(四百九十二)- 主成分分析与因子分析

在因子分析中,因子载荷矩阵是用来表示( )。 A. 变量和因子之间的关系 B. 样本和因子之间的关系 C. 变量和样本之间的关系 D. 因子和因子之间的关系 数据分析认证考试介绍:点击进入 题目来源于CDA模拟题库 点击此处获取答案…

Pytorch cat()与stack()函数详解

torch.cat() cat为concatenate的缩写,意思为拼接,torch.cat()函数一般是用于张量拼接使用的 cat(tensors: Union[Tuple[Tensor, ...], List[Tensor]], dim: _int 0, *, out: Optional[Tensor] None) -> Tensor: 可以看到cat()函数的参数&#xf…