当前位置: 首页 > news >正文

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

目录

题目

分析

代码


题目

MyNumbers 表:

+-------------+------+
| Column Name | Type |
+-------------+------+
| num         | int  |
+-------------+------+
该表可能包含重复项(换句话说,在SQL中,该表没有主键)。
这张表的每一行都含有一个整数。

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

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

查询结果如下例所示。

示例 1:

输入:
MyNumbers 表:
+-----+
| num |
+-----+
| 8   |
| 8   |
| 3   |
| 3   |
| 1   |
| 4   |
| 5   |
| 6   |
+-----+
输出:
+-----+
| num |
+-----+
| 6   |
+-----+
解释:单一数字有 1、4、5 和 6 。
6 是最大的单一数字,返回 6 。

示例 2:

输入:
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


http://www.mrgr.cn/news/3211.html

相关文章:

  • 构建Docker镜像时,遇到从`deb.debian.org`下载软件包速度很慢
  • MySQL 如何保证事务的原子性
  • 知识竞赛中PK答题环节竞赛规则有哪些设计方案
  • Transformer模型中的Position Embedding实现
  • 我是如何克服编程学习中的挫折感的
  • 浙江大学蒋超实验室在JHM发文揭示日常使用量的一次性纸杯释放的微塑料或可能影响孕期健康
  • python实现K-means图像聚类
  • 安科瑞智慧型动态无功补偿的工业应用——以江苏某陶瓷生产企业配电房改造为例
  • 41-设计规则:线宽规则
  • Kafka主题(Topic/文件夹)的操作
  • 黑帽子工具编写(python)
  • Java MessagePack序列化工具(适配Unity)
  • Java中hashcode()和equals()关系
  • FPGA工程师成长路线(持续更新ing,欢迎补充)
  • android apk 加固后的地图加载异常及重新签名
  • 以简单的例子从头开始建spring boot web多模块项目(四)-多模块工具类
  • vue3+websocket的创建和使用,页面刷新保持长连接
  • 理解Flink并行度
  • php7.1编译安装
  • 【python】JS逆向中,手把手教会你如何层层突破瑞数加密