查询工资级别的个数>20的个数,并且按工贷级别降序

ops/2024/10/20 13:49:10/

SELECT COUNT(*), grade_level
FROM employees e
JOIN job_grades g ON e.salary BETWEEN g.lowest_sal AND g.highest_sal
GROUP BY grade_level
HAVING COUNT(*) > 20
ORDER BY grade_level DESC;

为什么需要GROUP BY而不是仅仅ORDER BY?
聚合数据:GROUP BY用于将结果集中的行分组,每组共享相同的grade_level值。在每组内,你可以使用聚合函数(如COUNT(*))来计算该组内的行数。没有GROUP BY,你将无法按grade_level进行分组并计算每个级别的员工数量。
筛选分组:HAVING子句用于过滤分组后的结果。在这个例子中,HAVING COUNT(*) > 20确保只有那些员工数量大于20的grade_level组被包含在最终的结果中。HAVING子句在GROUP BY之后执行,用于过滤聚合后的结果。
排序结果:ORDER BY用于对最终的结果集进行排序。在这个例子中,它根据grade_level的值以降序方式排序结果。但请注意,ORDER BY不能在没有GROUP BY的情况下直接应用于聚合函数的结果,因为那样会导致SQL语句的语法错误或逻辑错误。

  1. select语句中出现的列必须出现在group by语句中,而其他语句中的列可与select不一致??

  2. where分组前过滤,having分组后过滤,故having是对分组的值即聚集函数进行过滤


http://www.ppmy.cn/ops/55424.html

相关文章

原生小程序配置公共的样式方法之一

我们无论在写小程序或是其他程序时,难免会遇见同样的颜色值,或者间距值,每次都要写显得麻烦,逼数又不高; 如果哪天需要将整个主题颜色改了,那岂不是得一个一个去查找改,很麻烦,所以&…

Pycharm常用快捷键整理

1,格式化代码 【ctrlAltL】 写代码的时候会发现有很多黄色的波浪号,这个时候可以点击任意黄色波浪号的代码,然后按下【Ctrl Alt L】进行代码格式化 2,快速往返 ctrll Alt ⬅ ,表示查看上一步调用函数位置&#xff0…

leetcode--二叉树中的最长交错路径

leetcode地址:二叉树中的最长交错路径 给你一棵以 root 为根的二叉树,二叉树中的交错路径定义如下: 选择二叉树中 任意 节点和一个方向(左或者右)。 如果前进方向为右,那么移动到当前节点的的右子节点&…

使用AES加密数据传输的iOS客户端实现方案

在现代应用开发中,确保数据传输的安全性是至关重要的。本文将介绍如何在iOS客户端中使用AES加密数据传输,并与服务器端保持加密解密的一致性。本文不会包含服务器端代码,但会解释其实现原理。 加密与解密的基本原理 AES(Advance…

【C++】哈希表 ---开散列版本的实现

你很自由 充满了无限可能 这是很棒的事 我衷心祈祷你可以相信自己 无悔地燃烧自己的人生 -- 东野圭吾 《解忧杂货店》 开散列版本的实现 1 前言2 开散列版本的实现2.1 节点设计2.2 框架搭建2.3 插入函数2.4 删除函数2.5 查找操作2.6 测试 Thanks♪(・ω&#x…

[Redis]哨兵机制

哨兵机制概念 在传统主从复制机制中,会存在一些问题: 1. 主节点发生故障时,进行主备切换的过程是复杂的,需要人工参与,导致故障恢复时间无法保障。 2. 主节点可以将读压力分散出去,但写压力/存储压力是无法…

JavaScript常用包管理工具

NPM、Yarn、CNPM 和 PNPM 是 JavaScript 生态系统中常用的包管理工具。它们各自有不同的特点和优势。以下是对它们的详细解释: 1. NPM (Node Package Manager) 简介: NPM 是 Node.js 的默认包管理工具,也是最早出现的 JavaScript 包管理工具…

认识Selenium WebDriver

Selenium WebDriver 是一个广泛使用的浏览器自动化工具,它允许开发人员通过编写脚本来模拟用户在浏览器上的操作。以下是使用 Selenium WebDriver 的基本步骤和示例代码。 安装 Selenium WebDriver 首先,确保安装了 Selenium 库。可以使用 pip 来安装&…