【SQL】仅出现一次的最大数据

目录

语法

需求

示例

分析

代码


语法

SELECT MAX(salary) AS highest_salary

FROM employees;

MAX 语句是一种常用于数据库查询、编程语言以及数据分析中的函数,用于返回一组值中的最大值,可以结合 GROUP BY 子句使用 MAX 函数,以获取每个组的最大值。

SELECT name, salary

FROM employee

WHERE salary = (SELECT MAX(salary) FROM employee)

子查询(Sub Query)本质上是一个完整的SELECT语句,它可以嵌套在另一个SELECT语句、INSERT语句、UPDATE语句或DELETE语句中。子查询的输出可以包括一个单独的值(单行子查询)、几行值(多行子查询)或多列数据(多列子查询)。以上是单行子查询的示例。

  • 单行子查询:只返回一行数据的子查询语句。这种子查询通常用于比较操作,如等于、大于、小于等。
  • 多行子查询:返回多行数据的子查询。这种子查询通常与IN、ANY或ALL谓词一起使用,以进行集合比较。
  • 此外,子查询还可以根据其执行方式分为相关子查询和非相关子查询:
  • 相关子查询:子查询的执行依赖于外部查询。换句话说,子查询中的表用到了外部的表,并进行了条件关联。因此,每执行一次外部查询,子查询都要重新计算一次。
  • 非相关子查询:子查询不依赖于外部查询,可以在外部查询执行之前独立执行。这种子查询通常只执行一次。

需求

MyNumbers 表:

复制代码
+-------------+------+
| Column Name | Type |
+-------------+------+
| num         | int  |
+-------------+------+

该表可能包含重复项(换句话说,在SQL中,该表没有主键)。

这张表的每一行都含有一个整数。

单一数字 是在 MyNumbers 表中只出现一次的数字。

找出最大的 单一数字 。如果不存在 单一数字 ,则返回 null 。

查询结果如下例所示。

示例

复制代码
输入:
MyNumbers 表:
+-----+
| num |
+-----+
| 8   |
| 8   |
| 3   |
| 3   |
| 1   |
| 4   |
| 5   |
| 6   |
+-----+
输出:
+-----+
| num |
+-----+
| 6   |
+-----+
解释:单一数字有 1、4、5 和 6 。
6 是最大的单一数字,返回 6 。
复制代码
输入:
MyNumbers table:
+-----+
| num |
+-----+
| 8   |
| 8   |
| 7   |
| 7   |
| 3   |
| 3   |
| 3   |
+-----+
输出:
+------+
| num  |
+------+
| null |
+------+
解释:输入的表中不存在单一数字,所以返回 null 。

分析

单一数字 是在 MyNumbers 表中只出现一次的数字。

按照num分组,group by num

通过count确定单一数据,having count(num)=1

找出最大的单一数字

分两步,先单一数据,后最大

先通过自查询找出所有单一数据,(select num from MyNumbers group by num having count(num)=1)

通过max()函数查找最大的单一数据,select max(num)

设置别名,避免重名,as n

如果不存在 单一数字 ,则返回 null 。

一个很妙的点,当MAX()函数在没有行可供计算时,它将返回NULL。因此,如果MyNumbers表中的所有num值都不是唯一的,这个查询将返回NULL。

代码

复制代码
select max(num) num 
from 
    (select num 
    from MyNumbers 
    group by num 
    having count(num)=1) n

相关推荐
oradh9 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
用户713335851562410 小时前
MySQL - 事务、redo/undo 日志与 MVCC
mysql
z1234567898610 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD10 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
用户713335851562411 小时前
MySQL - InnoDB 的 Buffer Pool
mysql
TlSfoward11 小时前
抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具
数据库·爬虫·网络协议·搜索引擎·php
数智化管理手记12 小时前
账龄分析手工统计易遗漏?自动账龄分析工具怎么搭建
大数据·网络·数据库·人工智能·数据挖掘
LabVIEW开发12 小时前
NI Package Manager安装LabVIEW时InternalServerError错误
网络·数据库·labview·labview知识·labview功能·labview程序
SelectDB12 小时前
PostgreSQL 实时同步到 Apache Doris:一站式 CDC 解决方案
数据库
Database_Cool_12 小时前
AI Agent 长期记忆怎么存?阿里云 PolarDB-X 对接 Mem0 记忆框架实践
数据库·阿里云