SQL中group by的用法总结

2023-11-04

一、简介SQL语言

  SQL语言,是结构化查询语言的简称。SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
  SQL语言,是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方式,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的结构化查询语言作为数据输入与管理的接口。SQL语言语句可以嵌套,这使她具有极大的灵活性和强大的功能。

二、聚合函数

函数 作用
sum(列名) 求和
max(列名) 最大值
min(列名) 最小值
avg(列名) 平均值
first(列名) 第一条记录(仅access支持)
last(列名) 最后一条记录(仅access支持)
count(列名) 统计记录数(注意和count(*)的区别)

  注意:使用聚合函数时,select子句中只能存在三种元素:常数、聚合函数、聚合键。(聚合键:eg.在group by子句中指定的列)
(1)access:是微软发布的关系数据库管理系统。可以进行数据分析(拥有强大的数据处理、统计分析能力,可以进行各类汇总、平均等统计)和开发软件(成本低且易学,可以开发生产管理、销售管理、库存管理等各类企业管理软件)。

(2)count(* )
count()函数返回匹配指定条件的行数,忽略null;count(* )就返*回查询结果所有的行数,不忽略null和0。当count()里面跟某个字段,特指某个字段的行数。

三、group by

【通过(by)一定的方式分组(group)】

1、group by的作用

  根据一定的规则将一个数据集划分成若干个小区域,然后针对每个区域进行数据处理。即分组查询,一般是和聚合函数配合使用。
  group by有一个原则:就是select 后面的所有列中,没有使用聚合函数的列,必须出现在group by 后面。

2、group by的用法:

group by是先排序后分组
(1)简单应用:select——from——where——group by——;
执行顺序:from——where——group by——select——
(2)多表连接:select , from left join _ on_group by;

  注意:
(1)在group by子句中不能使用select子句中定义的列的别名。由于group by子句的执行优先级高于select,因此如果在select中定义的列的别名,group by子句并不知道。
(2)group by子句的结果是随机的。

四、having和where的区别

1、where子句

  作用是这对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。

2、having子句

  作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件过滤出特定的组,也可以使用多个分组标准进行分组。

例子1:
select 类别,sum(数量) as 数量只和 from A
group by 类别 having sum(数量)>18

例子2:
select 类别,sum(数量)from A
where 数量 gt;8
group by 类别 having sum(数量)gt;10

五、Compute 和 Compute by

1、compute子句

  其能够观察“查询结果”的数据细节或统计各列数据,返回结果由select列表和compute统计结果组成。
例子3:
select * from A
where 数量>8
compute max(数量),min(数量),avg(数量)

2、compute by

例子4:
select * from A
where 数量>8
order by 类别
compute max(数量),min(数量),avg(数量) by 类别

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL中group by的用法总结 的相关文章

  • 从 SQL 数据库获取日期时间

    我的数据库表中有一个 DateTime 记录 我编写一个查询从数据库中获取它 string command2 select Last Modified from Company Data where Company Name Descrip
  • Magento - 无法重新索引产品价格 - 外键约束失败

    我最近刚刚将我的 magento 商店从 1 4 2 升级到 1 7 0 2 升级进行得很顺利 但是当我尝试在升级后重新索引数据时 产品价格失败了 我尝试过使用php shell indexer php reindexall来自 SSH 它
  • 使用显式创建表语句与 select into 创建表

    使用显式创建表语句和加载数据与选择数据之间是否存在性能差异 此示例仅显示 2 列 但问题是针对使用非常大的表 下面的示例也使用临时表 尽管我也想知道使用常规表的效果 我认为无论表格类型如何 它们都是相同的 临时表场景 Explicitly
  • PostgreSQL 窗口函数:row_number() over(按 col2 分区 col 顺序)

    以下结果集源自具有一些连接和联合的 SQL 查询 SQL 查询已经对 Date 和 game 上的行进行了分组 我需要一列来描述按日期列分区的游戏的尝试次数 Username Game ID Date johndoe1 Game 1 100
  • 如何使用Python3.4在tornado中进行异步mysql操作?

    我现在使用Python3 4 我想在Tornado中使用异步mysql客户端 我已经发现torndb https github com bdarnell torndb但在阅读其源代码后 我认为它无法进行异步mysql操作 因为它只是封装了M
  • Mysql 将 --secure-file-priv 选项设置为 NULL

    我在 Ubuntu 中运行 MySQL 我在运行特定的查询集时收到此错误 MySQL 服务器正在使用 secure file priv 选项运行 因此无法执行此语句 当我这样做的时候SELECT secure file priv 在我的 m
  • 在 SQL 中如何获得整数的最大值?

    我试图从 MySQL 数据库中找出整数 有符号或无符号 的最大值 有没有办法从数据库本身提取这些信息 是否有我可以使用的内置常量或函数 标准 SQL 或 MySQL 特定的 At http dev mysql com doc refman
  • 如何获取Postgres当前的可用磁盘空间?

    在开始在数据库中进行某些工作之前 我需要确保至少有 1Gb 的可用磁盘空间 我正在寻找这样的东西 select pg get free disk space 是否可以 我在文档中没有找到任何相关内容 PG 9 3 操作系统 Linux Wi
  • java.lang.NoSuchMethodError:没有虚拟方法 setTag(Ljava/lang/Object;)

    我刚刚完成使用登录和注册屏幕与齐射的代码 但在模拟器中运行时我收到此错误 java lang NoSuchMethodError No virtual method setTag Ljava lang Object Lcom android
  • 更高效的 LINQ 查询

    有人可以帮我将此查询循环变成高效的 Linq 查询吗 我将其加载到 TreeView 中 因此必须附加每个项目 包含也非常低效 延迟加载项目也不起作用 事实上 这个查询访问数据库的次数比应有的要多 public IQueryable
  • 将数据表传递到存储过程。有没有更好的办法?

    数据表可以以某种方式传递到 SQL Server 2005 或 2008 中吗 我知道标准方法似乎是将 XML 传递给 SP 并且可以通过某种方式轻松地将数据表转换为 XML 来实现这一点 将 NET 对象传递到 SP 怎么样 那可能吗 我
  • 从一张表更新并插入另一张表

    我有两张桌子 table1 ID 代码 姓名 table2 ID 代码 姓名 具有相同的列 我想将数据从 table1 插入到 table2 或更新列 如果 table2 中存在 table1 ID table2 ID 执行此操作的简单方法
  • Laravel 读写连接不同步

    我在 Laravel 5 2 应用程序中使用读写 MySQL 连接设置 mysql gt write gt host gt env DB HOST WRITE localhost read gt host gt env DB HOST RE
  • 如何在 Postgresql 中将 GIST 或 GIN 索引与 hstore 列一起使用?

    我正在使用 postgresql 9 3 的 hstore 我正在尝试对 hstore 列使用索引就像文档所述 http www postgresql org docs 9 3 static hstore html 我的问题是索引似乎没有被
  • Apache 子进程已退出,状态为 255

    经过大量的搜索 尝试 修复 等待和哭泣 在我放弃之前 我想为这个错误抓住最后的机会 我们正在奔跑Microsoft Windows Server 2012 Apache 2 4 6 Win64 OpenSSL 1 0 1e PHP 5 5
  • LEFT JOIN 比 INNER JOIN 快得多

    我有一张桌子 MainTable 有超过 600 000 条记录 它通过第二个表连接到自身 JoinTable 在父 子类型关系中 SELECT Child ID Parent ID FROM MainTable AS Child JOIN
  • MySQL 两种日期格式之间的转换

    用户将以这种格式输入日期 2017 年 2 月 17 日 存储在 mysql 数据库中的日期格式如下 2015 02 17 00 00 00 我想做的是 SELECT FROM insurance where DATE FORMAT in
  • 批处理文件并与数据库比较

    目前我正在开发一个 Spring Boot 应用程序 该应用程序定期尝试处理包含用户数据的文件 其中每行都包含userId and departamentId隔开 例如123534 13 该文件将包含数百万条记录 我的要求是以这样的方式将此
  • 在 Oracle 中如何将多行组合成逗号分隔的列表? [复制]

    这个问题在这里已经有答案了 我有一个简单的查询 select from countries 结果如下 country name Albania Andorra Antigua 我想在一行中返回结果 如下所示 Albania Andorra
  • 如何对字段数据进行分组?

    我有 sql 查询来显示数据 SELECT artikel foto naam fotografer id fotografer name fotografer customer first name customer last name

随机推荐

  • 0.0.0.0 网关的含义

    简介 使用 route 命令查看linux的路由时候常遇到 gateway为0 0 0 0 的情况 注意不是目标网段 让人很困惑 仔细看看这些网卡往往时候一些虚拟出来的网卡 比如docker0 0 0 0 0 或者 表示不需要路由 目标地址
  • Addressables学习笔记3: 实际操作实现资源热更新

    本篇基本上是官方演示的东西 介绍一下如何快速使用Addressables实现资源热更 为了能够热更资源 你需要有一个资源服务器使你能下载资源 一 资源准备 首先打开Unity编辑器菜单 gt Window gt Asset Manageme
  • 通用工具类

    package com struts2 jquery utils import java io File import java io IOException import java io OutputStream import java
  • 驱动级鼠标模拟实现_S71500PLC 连接 V90 伺服系统实现位置闭环控制

    S7 1500 运动控制功能支持旋转轴 定位轴 同步轴和外部编码器等工艺对象 并拥有轴控制面板以及全面的在线和诊断功能有助于轻松完成驱动装置的调试和优化工作 S7 1500 支持多种连接方式 可以使用 PROFIBUS DP 和 PROFI
  • Android缓存机制&一个缓存框架推荐

    1 先推荐一个轻量级缓存框架 ACache ASimpleCache ACache介绍 ACache类似于SharedPreferences 但是比 SharedPreferences功能更加强大 SharedPreferences只能保存
  • yagmail群发邮件

    直接给代码 导入yagmail第三方库 import yagmail yagmail SMTP user 邮箱名 host SMTP服务器域名 yag yagmail SMTP user 284036658 qq com host smtp
  • 零信任提升组织的数字安全性

    组织越来越多地实施零信任策略以增强其数字安全状况 根据 信息安全杂志 的统计 有15 的组织表示他们在2019年底之前实施了零信任策略 另有59 的参与者表示 他们打算在未来12个月内实施 要了解为什么如此众多的组织涌向零信任 首先要深入了
  • 性能测试工具---JMeter的安装与使用详解(第一篇)

    目录 一 主流性能测试工具 1 1 LoaderRunner 1 2 JMeter 二 JMeter环境搭建 2 1下载安装JDK 2 2 下载安装JMeter 2 3 JMeter文件目录介绍 2 3 1 bin目录 2 3 2 docs
  • python 写文件 换行_python中写入txt文件需要换行,以及\r 和\n

    在Python中 用open 函数打开一个txt文件 写入一行数据之后需要一个换行 如果直接用 f write n 只会在后面打印一个字符串 n 而不是换行 需要用 f write r n 注意点 1 python文件写入的时候 当写入一段
  • 【SpringBoot学习】05-自定义LocaleResolver国际化区域语言

    首先配置好i18n文件 以及所对应的语言 在properties中配置 因为默认为 message spring messages basename i18n xxxx 页面内容替换 配置点击 配置一个 LocaleResolver 自定义
  • 十种常用机器学习算法入门

    弱人工智能近几年取得了重大突破 悄然间 已经成为每个人生活中必不可少的一部分 以我们的智能手机为例 看看到底温藏着多少人工智能的神奇魔术 下图是一部典型的智能手机上安装的一些常见应用程序 可能很多人都猜不到 人工智能技术已经是手机上很多应用
  • 【Linux】动静态库

    文章目录 1 动静态库的原理 2 动态库和静态库基础 3 动静态库的实现 3 1设计一个静态库 3 2设计一个动态库 4 动静态库的使用 4 1静态库的使用 4 2动态库的使用 4 3动态库的多进程共享原理 1 动静态库的原理 源文件和头文
  • KAFKA基础操作命令

    1 查看所有的话题 topic kafka topics sh zookeeper 10 10 6 98 2181 kafka list 2 删除 topic kafka topics sh zookeeper 10 10 6 99 218
  • 华为虚拟桌面发放流程【FusionAccess】——详解

    华为FusionAccess作为一个桌面云接入管理系统 以服务器虚拟化为基础 共享CPU 内存 网络连接 存储器等底层物理硬件资源 使用户桌面以虚拟机的形式独立运行 虚拟机彼此隔离 提供给用户使用 那么虚拟机是如何一步步为用户所用呢 众所周
  • Leetcode 347. 前 K 个高频元素(堆实现)

    前 K 个高频元素 堆实现 给定一个非空的整数数组 返回其中出现频率前 k 高的元素 示例 1 输入 nums 1 1 1 2 2 3 k 2 输出 1 2 示例 2 输入 nums 1 k 1 输出 1 class Solution pu
  • 初学者使用R语言读取excel/csv/txt的注意事项

    本文首发于 医学和生信笔记 完美观看体验请至公众号查看本文 文章目录 把数据读入R语言 Excel csv txt 其他 写出文件 从R语言另存为其他格式 本文面向R语言初学者 尤其是生物医药领域的初学者 大佬勿喷 在之前的推文中 我们用两
  • java设置断点,在Java中设置断点

    How does setting breakpoints in Java work Is it just based on the source file name and line number Does the class or met
  • 编写自动化软件+python

    前言 本文分为代码篇和实操篇 代码篇以 不高兴就喝水 的代码为原版和其他改版做对比 帮助学习了解 实操部分也分为原版的实操和改版的实操 学前准备 pyautogui库用法 https blog csdn net qingfengxd1 ar
  • Cgroups使用

    Cgroups使用 一 Cgroups介绍 linux内核提供了cgroups控制组 controlgroups 的功能 最初由google的工程师提出 后来被整合进Linux内核 Cgroups也是LXC LinuxContainer容器
  • SQL中group by的用法总结

    一 简介SQL语言 SQL语言 是结构化查询语言的简称 SQL语言是一种数据库查询和程序设计语言 用于存取数据以及查询 更新和管理关系数据库系统 同时也是数据库脚本文件的扩展名 SQL语言 是高级的非过程化编程语言 允许用户在高层数据结构上