MySQL greatest()和least()函数

转载自  MySQL greatest()和least()函数

MySQL GREATEST和LEAST函数介绍

GREATESTLEAST函数都使用N个参数,并分别返回最大和最小值。下面说明GREATESTLEAST函数的语法:

GREATEST(value1, value2, ...);
LEAST(value1,value2,...);

参数可能具有混合数据类型。以下比较规则适用于这两个函数:

  • 如果任何参数为NULL,则两个函数都将立即返回NULL,而不进行任何比较。
  • 如果在INT或REAL上下文中使用函数,或者所有参数都是整数值或REAL值,那么它们将分别作为INTREAL来比较。
  • 如果参数由数字和字符串组成,则函数将它们作为数字进行比较。
  • 如果至少一个参数是非二进制(字符)字符串,则函数将将参数作为非二进制字符串进行比较。
  • 在所有其他情况下,函数将参数作为二进制字符串进行比较

以下示例演示了GREATESTLEAST函数的工作原理。

SELECT GREATEST(10, 20, 30),  -- 30LEAST(10, 20, 30); -- 10SELECT GREATEST(10, null, 30),  -- nullLEAST(10, null , 30); -- null

 

MySQL GREATEST和最小值的例子

下面为了演示,我们来创建一个名称为:revenues的新表。

USE testdb;CREATE TABLE IF NOT EXISTS revenues (company_id INT PRIMARY KEY,q1 DECIMAL(19 , 2 ),q2 DECIMAL(19 , 2 ),q3 DECIMAL(19 , 2 ),q4 DECIMAL(19 , 2 )
);

revenues表由company_id作为主键,其它四个列分别存储每季度公司的收入。

以下语句在revenues表中插入两行 -

INSERT INTO revenues(company_id,q1,q2,q3,q4)
VALUES (1,100,120,110,130),(2,250,260,300,310);

要获得每个公司的最高和最低收入,可使用GREATESTLOWEST,如下查询语句:

SELECT company_id,LEAST(q1, q2, q3, q4) low,GREATEST(q1, q2, q3, q4) high
FROMrevenues;

执行上面查询语句,得到以下结果 -

+------------+--------+--------+
| company_id | low    | high   |
+------------+--------+--------+
|          1 | 100.00 | 130.00 |
|          2 | 250.00 | 310.00 |
+------------+--------+--------+
2 rows in set

如果任何参数为NULL,则GREATESTLEAST函数都返回NULL,这可能不是我们想要的。为了避免这种情况,可以使用IFNULL函数将NULL视为零来执行数字比较。

以下语句向revenues表中插入在q4列中带有NULL值的一条新行。

INSERT INTO revenues(company_id,q1,q2,q3,q4)
VALUES (3,100,120,110,null);

如果使用GREATESTLEAST函数来查询数据,则可以得到按预期设计的结果。

SELECT company_id,LEAST(q1, q2, q3, q4) low,GREATEST(q1, q2, q3, q4) high
FROMrevenues;

执行上面查询语句,得到以下结果 -

+------------+--------+--------+
| company_id | low    | high   |
+------------+--------+--------+
|          1 | 100.00 | 130.00 |
|          2 | 250.00 | 310.00 |
|          3 | NULL   | NULL   |
+------------+--------+--------+
3 rows in set

如上面查询所见,其ID=3的公司的最低值和最高值为NULL

为避免这种情况,您可以使用IFNULL函数,如下:

SELECT company_id,LEAST(IFNULL(q1, 0),IFNULL(q2, 0),IFNULL(q3, 0),IFNULL(q4, 0)) low,GREATEST(IFNULL(q1, 0),IFNULL(q2, 0),IFNULL(q3, 0),IFNULL(q4, 0)) high
FROMrevenues;

执行上面查询语句,得到以下结果 -

+------------+--------+--------+
| company_id | low    | high   |
+------------+--------+--------+
|          1 | 100.00 | 130.00 |
|          2 | 250.00 | 310.00 |
|          3 | 0.00   | 120.00 |
+------------+--------+--------+
3 rows in set

在本教程中,您已经学习了如何使用MySQL GREATESTLEAST函数来查找值列表中最大和最小的值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326300.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

环东风尚注注意事项

1.先对钱(现金)。 2.看美团和飞猪上的订单。 3.根据订单在订单表上做预订。 4.对本子上入住的人是否和电脑上的一致。 5.对房卡和电脑上的是否一致。 6.查看退宿的身份证是否已退。 退房: 1.先退钱 2.退身份证 3.退卡 开房: 1.收…

2019蓝桥杯省赛---java---C---1(求和)

题目描述 代码实现 package TEST;public class Main {public static void main(String[] args) {int cnt 0;for (int i 1; i < 2019; i)if (check(i)) cnt i;System.out.print(cnt);}static boolean check(int n) {String an"";if (a.contains("2")…

使用EntityFrameworkCore实现Repository, UnitOfWork,支持MySQL分库分表

昨天&#xff08;星期五&#xff09;下班&#xff0c;19&#xff1a;00左右回到家&#xff0c;洗个澡&#xff0c;然后20&#xff1a;30左右开始写代码&#xff0c;写完代码之后&#xff0c;上床看了《生活大爆炸10季》17、18两集&#xff0c;发现没有更新到19集&#xff0c;瞄…

cs1.5 linux服务端,Linux下架设CS1.5服务器

所需文件&#xff1a;1、hlds_l_3110_full.bin2、cs_15_full.tar.gz3、engine_i386.so(据说这个东东可以免cdkey&#xff0c;可我不用也可免cdkey)把所有的文件都拷贝到/usr/cs目录下&#xff1a;# chmod x hlds_l_3110_full.bin# tar xzvf hlds_l_3110_full.tar.gz# tar xzvf …

MySQL isnull()函数基本指南

转载自 MySQL isnull()函数基本指南 MySQL ISNULL函数简介 ISNULL函数接受一个参数&#xff0c;并测试该参数是否为NULL。如果参数为NULL&#xff0c;则ISNULL函数返回1&#xff0c;否则返回0。 下面说明了ISNULL函数的语法&#xff1a; ISNULL(expr)请考虑以下示例&#…

ppt2010基础操作笔记

一、PPT2010的界面&#xff1a; 1.功能选项卡 2.大纲区 3.标题栏 4.备注页 5.状态栏 6.工作区 二、创建PPT演示文稿 1.开始–》PPT2010 2.在PPT里面新建–》文件–》新建–》样本模板–》选择模板。 三、PPT2010中的视图&#xff1a; 1.普通视图 2.大纲视图 3.幻灯…

2019蓝桥杯省赛---java---C---2(矩阵切割)

题目描述 代码实现 package TEST;import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int max sc.nextInt();int min sc.nextInt();int sum 0, temp;while (max ! 0 && min ! 0) {if (max …

期待微软平台即服务技术Service Fabric 开源

微软的Azure Service Fabric的官方博客在3.24日发布了一篇博客 Service Fabric .NET SDK goes open source &#xff0c;介绍了社区呼声最高的Service Fabric开源的情况以及当前的情况&#xff0c;这次开源了Service Fabric的.NET SDK部分&#xff0c;主要是两个&#xff1a; …

java中input表单中的type=date返回类型【切记】

input表单中的type”date”返回类型为Date类型&#xff01; input表单中的type”date”返回类型为Date类型&#xff01; input表单中的type”date”返回类型为Date类型&#xff01; 重要的内容说三遍&#xff0c;今晚可算是及坑死我了&#xff0c;一直以为是String类型 &…

全自动安装 linux光盘,CentOS 7.1全自动安装光盘制作详解

安装系统的话&#xff0c;常用方式就是通过U盘&#xff0c;光盘&#xff0c;kickstart网络自动化安装&#xff0c;网络自动化安装固然好&#xff0c;但是有时候在现场做项目的话根本就没有kickstart环境&#xff0c;甚至连基本的网络建设都没有弄好&#xff0c;此时该如何安装系…

MySQL last_insert_id()函数

转载自 MySQL last_insert_id()函数 MySQL LAST_INSERT_ID函数简介 在数据库设计中&#xff0c;我们经常使用代理键使用AUTO_INCREMENT属性为主键列生成唯一的整数值。 当您将新行插入到具有AUTO_INCREMENT列的表中时&#xff0c;MySQL会自动生成一个唯一的整数&#xff0c…

2019蓝桥杯省赛---java---C---4(质数)

题目描述 代码实现 package TEST; public class Main {public static void main(String[] args) {int cnt 0;for (int i 2; ; i )if(check(i)){cnt ;if(cnt 2019){System.out.println(i);break;}}}public static boolean check(int n){//判断一个数是否为质数for (int i 2…

eclipse下载与安装步骤详解,包含解决错误(最全最详细)

以前一直用的是myeclipse,今天有幸接触eclipse,那我们就先来安装的配置一下&#xff0c;下载地址&#xff1a;点击下载密码&#xff1a;h0kg&#xff0c;下载完成以后就可以安装了&#xff0c;首先我们来先安装jdk1.7, 打开jdk的安装包 双击即可&#xff0c; 直接点击下一步&…

CoreCLR文档翻译 - GC的设计

此文档来源于CoreCLR的BOTR(The Book of the Runtime), 点击打开原文一切著作权归微软公司所有 GC的设计 作者: Maoni Stephens (maoni0) - 2015 提示: 推荐看 The Garbage Collection Handbook 这本书学习更多关于GC的知识 (在文章底部的链接中) 组件结构 在GC中有两个主…

MySQL cast()函数

转载自 MySQL cast()函数 MySQL CAST函数介绍 MySQL CAST()函数的语法如下&#xff1a; CAST(expression AS TYPE);CAST()函数将任何类型的值转换为具有指定类型的值。目标类型可以是以下类型之一&#xff1a;BINARY&#xff0c;CHAR&#xff0c;DATE&#xff0c;DATETIME…

linux 编译 expat,关于expat库的编译

1、expat库简介refer to wiki:To use the Expat library, programs first register handler functions with Expat. When Expat parses an XML document, it calls the registered handlers as it finds relevant tokens in the input stream. These tokens and their associat…

node.js安装不好怎么办

试试重启电脑 可能解决了百分之99.9的问题

计算机操作基础

一、计算机硬件组成&#xff1a; 1.CPU 2.主板 3.内存 4.硬盘 5.光驱 6.显卡 7.网卡 8.声卡 9.电源 10.操作系统 二、CPU型号&#xff1a; 1.INTEL 1)主频&#xff1a;2.8-3.7GHZ 2)核心&#xff1a;双核、四核、八核、十核 3)高速总缓冲&#xff1a;2-20MB 4)…

CoreCLR源码探索(四) GC内存收集器的内部实现 分析篇

在这篇中我将讲述GC Collector内部的实现, 这是CoreCLR中除了JIT以外最复杂部分&#xff0c;下面一些概念目前尚未有公开的文档和书籍讲到。 为了分析这部分我花了一个多月的时间&#xff0c;期间也多次向CoreCLR的开发组提问过&#xff0c;我有信心以下内容都是比较准确的&am…

vue开源项目

转载自 vue开源项目 一、前台UI组件库 1.Element 优点&#xff1a;中文文档&#xff0c;ui种类比较全&#xff0c;ui设计简洁清晰 缺点&#xff1a;不够有特点 2.iView 优点&#xff1a;和element的UI很相似&#xff0c;有一些多的补充&#xff0c;可以相互替换 缺点&am…