MySQL max()函数

转载自  MySQL max()函数

MySQL MAX函数介绍

MySQL MAX()函数返回一组值中的最大值。MAX()函数在许多查询中非常方便,例如查找最大数量,最昂贵的产品以及客户的最大付款。

MAX()函数的语法如下:

MAX(DISTINCT expression);

如果添加DISTINCT运算符,则MAX函数返回不同值的最大值,它与所有值的最大值相同。 这意味着DISTINCT运算符不会对MAX函数产生任何影响(用不用DISTINCT运算符都可以)。

请注意,DISTINCT运算符在其他聚合函数(如COUNT,SUM和AVG)中生效。

 

MySQL MAX函数示例

我们来看看示例数据库(yiibaidb)中的payments表,其表结构如下所示 -

mysql> desc payments;
+----------------+---------------+------+-----+---------+-------+
| Field          | Type          | Null | Key | Default | Extra |
+----------------+---------------+------+-----+---------+-------+
| customerNumber | int(11)       | NO   | PRI | NULL    |       |
| checkNumber    | varchar(50)   | NO   | PRI | NULL    |       |
| paymentDate    | date          | NO   |     | NULL    |       |
| amount         | decimal(10,2) | NO   |     | NULL    |       |
+----------------+---------------+------+-----+---------+-------+
4 rows in set

要在payments表中获得最大的付款,您可以使用以下查询:

SELECT MAX(amount)
FROMpayments;

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

mysql> SELECT MAX(amount)
FROMpayments;
+-------------+
| MAX(amount) |
+-------------+
| 120166.58   |
+-------------+
1 row in set

 

MySQL MAX函数在子查询中

不仅要获得最大的付款金额,还要获得其他付款信息,如客户编号,支票号码和付款日期,您可以在子查询中使用MAX函数,如下所示:

SELECT *
FROMpayments
WHEREamount = (SELECT MAX(amount)FROMpayments);

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

+----------------+-------------+-------------+-----------+
| customerNumber | checkNumber | paymentDate | amount    |
+----------------+-------------+-------------+-----------+
|            141 | JE105477    | 2015-03-18  | 120166.58 |
+----------------+-------------+-------------+-----------+
1 row in set

上面查询语句是怎么运行的?

  • 子查询返回所有的最大付款金额。
  • 外部查询获取的金额等于从子查询返回的最大金额的其他相关付款信息。

不使用MAX函数的另一种方法是使用ORDER BY子句以降序对结果集进行排序,并使用LIMIT子句获取第一行,如下查询:

SELECT *
FROMpayments
ORDER BY amount DESC
LIMIT 1;

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

+----------------+-------------+-------------+-----------+
| customerNumber | checkNumber | paymentDate | amount    |
+----------------+-------------+-------------+-----------+
|            141 | JE105477    | 2015-03-18  | 120166.58 |
+----------------+-------------+-------------+-----------+
1 row in set

如果您没有在amount列上创建索引,则第二个查询执行速度更快,因为它会检查payments表中的所有行,而第一个查询会检查payments表中的所有行两次,一次是在子查询中,另一次在外部查询中。 但是,如果amount列被索引,则第一个查询将执行得更快。

具有GROUP BY子句的MySQL MAX

要找到每个组的最大值,您可以在SELECT语句中使用MAX函数与GROUP BY子句。

对于每个客户,查询获得客户已支付的最大付款,可使用以下查询:

SELECT customerNumber, MAX(amount)
FROMpayments
GROUP BY customerNumber
ORDER BY MAX(amount);

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

+----------------+-------------+
| customerNumber | MAX(amount) |
+----------------+-------------+
|            219 | 4465.85     |
|            198 | 9658.74     |
|            381 | 14379.9     |
|            103 | 14571.44    |
|            473 | 17746.26    |
|            362 | 18473.71    |
******* 此处省略一大波数据 ******
|            148 | 105743      |
|            124 | 111654.4    |
|            141 | 120166.58   |
+----------------+-------------+
98 rows in set

 

具有HAVING子句的MySQL MAX

您可以在HAVING子句中使用GROUP BY子句中的MAX函数,以根据指定的条件为分组添加过滤器。

例如,以下查询查找每个客户的最大付款; 并根据返回款项,如下面查询语句,只查询金额超过80000的付款 -

SELECT customerNumber, MAX(amount)
FROMpayments
GROUP BY customerNumber
HAVING MAX(amount) > 80000;

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

+----------------+-------------+
| customerNumber | MAX(amount) |
+----------------+-------------+
|            114 | 82261.22    |
|            124 | 111654.4    |
|            141 | 120166.58   |
|            148 | 105743      |
|            167 | 85024.46    |
|            239 | 80375.24    |
|            321 | 85559.12    |
+----------------+-------------+
7 rows in set

在本教程中,我们向您展示了如何使用MySQL MAX函数来查找一组值中的最大值。

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

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

相关文章

当我们在谈大前端的时候,我们谈的是什么

在今天,大前端并不是一个陌生的词汇,我们偶尔会听人谈起它,前些天还看到卓同学写了一篇《大前端时代下App开发者的生存之道》,说明这个词开始成为某种共识了。 但是大前端到底指的是什么?事实上大前端并没有明确的定义…

153. 寻找旋转排序数组中的最小值---LeetCode---JAVA

class Solution {public int findMin(int[] nums) {int minnums[0];for(int i1;i<nums.length;i){if(nums[i]<min){return nums[i];} }return nums[0];} }

php破坏代码,php不破坏单词截取子字符串

php不破坏单词截取子字符串/*snippet(phrase,[max length],[phrase tail])snippetgreedy(phrase,[max length before next space],[phrase tail])*/function snippet($text,$length64,$tail"...") {$text trim($text);$txtl strlen($text);if($txtl > $length) …

hibernate中报错could not initialize proxy - no Session的解决方法

hibernate中报错&#xff1a;could not initialize proxy - no Session&#xff0c;怎么解决&#xff1f; 解决方法&#xff1a; 在该hbm文件中的 many-to-one 的最后加上&#xff1a;lazy”false”&#xff0c;请看&#xff1a; <many-to-one name"kecheng" cl…

MySQL group_concat()函数

转载自 MySQL group_concat()函数 MySQL GROUP_CONCAT函数介绍 MySQL GROUP_CONCAT()函数将组中的字符串连接成为具有各种选项的单个字符串。 下面说明了GROUP_CONCAT()函数的语法&#xff1a; GROUP_CONCAT(DISTINCT expressionORDER BY expressionSEPARATOR sep);以下是…

MySQL标准偏差

转载自 MySQL标准偏差 标准差介绍 标准差是衡量数据集中值的分布情况&#xff0c;标准偏差显示平均值(平均值)存在多少变化。 低标准偏差表明数据集中的值接近于平均值。 而高标准偏差表示数据集的值在大范围的值上分散。 标准偏差是方差的平方根&#xff0c;可以通过以下…

从Visual Studio看微软20年技术变迁

前言 这个世界从来都不缺变革&#xff0c;从工业革命到晶体管和集成电路&#xff0c;从生活电器到物联网&#xff0c;从简陋人机到精致体验&#xff0c;我们在享受技术带来的便捷的同时&#xff0c;也在为复杂设计而带来的挑战和生产力下降而痛并快乐着。而迫切期盼的&#xff…

c传给php数据解包,小程序源码提取工具,完美解包,一键提取小程序源代码工具_PHP源码...

请注意&#xff1a;该源码来源网友分享&#xff0c;搜库资源网不提供技术支持&#xff0c;没有技术能力的小白勿拍。(如需安装服务费用另算)直接解压后就可以使用将小程序文件放到 wxapkg目录下然后打开 CrackMinApp.exe 按说明即可使用那么如何才能在手机里找到小程序的源文件…

2015蓝桥杯省赛---java---C---3(无穷分数)

题目描述 思路分析 它的结果会随着运算的次数越多,会越来越精确一个值,我们只需要把那个大约值求出来即可. 代码实现 package com.atguigu.lanqiao;public class Main {public static void main(String[] args) {System.out.printf("%.5f",f(1));}public static d…

致给博客粉丝

最近一段时间是我最忙的一段时间&#xff0c;也是博客粉丝找我最多的一段时间&#xff0c;好多粉丝找我要人脸识别的jar包和js文件&#xff0c;在这里我给大家统一说一下&#xff0c;粉丝们可以直接关注微信公众号&#xff1a;青鸟IT汇&#xff0c;回复&#xff1a;java人脸识别…

.Net Core迁移到MSBuild平台

一、前言 在上一篇文章.Net Core迁移到MSBuild的多平台编译问题中&#xff0c;简单的讲了下新的项目配置文件中的节点配置&#xff0c;这篇我将用一些例子来详细讲下从project.json迁移到msbuild过程的节点配置。做过完整迁移新项目配置文件的朋友&#xff0c;肯定会觉得新的项…

MySQL concat()函数

转载自 MySQL concat()函数 在本教程中&#xff0c;您将学习使用MySQL CONCAT和CONCAT_WS函数将两个或多个字符串连接在一起的各种方法。 要连接两个或多个引用的字符串值&#xff0c;请将字符串放在一起&#xff0c;如下所示&#xff1a; SELECT MySQL String Concaten…

青鸟IT汇微信公众号新增智能机器人

这么神奇的吗&#xff1f;居然可以智能小机器人无休止的聊天&#xff1f; 各位粉丝大家好&#xff0c;青鸟IT汇于2018年5月7日新加智能小机器人&#xff0c;粉丝们可以进行互动啦~~ 比如说&#xff1a; 或者这个样子的&#xff1a; 还有这个样子的&#xff1a; 偶尔的调戏…

php 接收文件 错误代码3,php上传文件错误代码3

上传更大的文件(> 10KB)将在$_FILES [‘file’] [‘error’]中获得错误代码3(UPLOAD_ERR_PARTIAL),并且小文件(< 10KB)将成功上传. 如果文件超过限制php post_max_size或upload_max_filesize,则应该获得错误代码1 UPLOAD_ERR_INI_SIZE.但是,获取错误代码3 UPLOAD_ERR_PAR…

2015蓝桥杯省赛---java---C---2(立方尾不变)

题目描述 代码实现 package com.atguigu.lanqiao;import java.util.Scanner;public class Main {public static void main(String[] args) {int sum0;for (int i 1; i < 10000; i) {String ai"";String b(long)(Math.pow(i,3))"";String cb.substring…

java人脸识别更新:摄像头支持360、火狐和谷歌浏览器

本次更新内容&#xff1a;打开摄像头在原有的火狐基础上新加360浏览器个谷歌浏览器&#xff0c;IE暂且不支持在index.js中&#xff0c;将这段代码&#xff1a;// 支持浏览器 谷歌,火狐,360,欧朋//navigator.getUserMedia这个写法在Opera中好像是navigator.getUserMedianowif …

使用 Angular

N。正如上个月提到的&#xff0c;现在可以开始处理 MEAN 堆栈的前端。也就是说&#xff0c;我们将深入探究 Angular。自本文撰写之时起&#xff08;可能在今后的几年间&#xff09;&#xff0c;我们都会面临一个问题&#xff0c;即 Angular 存在某种版本问题。 Angular 多年来一…

MySQL字符串长度

转载自 MySQL字符串长度 在本教程中&#xff0c;您将了解MySQL字符串长度函数&#xff0c;使您可以以字节为单位获取字符串的长度。 MySQL支持各种字符集&#xff0c;如latin1&#xff0c;utf8等。可以使用SHOW CHARACTER SET语句来获取MySQL数据库服务器支持的所有字符集。…

2015蓝桥杯省赛---java---C---1(隔行变色)

题目描述 Excel表的格子很多&#xff0c;为了避免把某行的数据和相邻行混淆&#xff0c;可以采用隔行变色的样式。 小明设计的样式为&#xff1a;第1行蓝色&#xff0c;第2行白色&#xff0c;第3行蓝色&#xff0c;第4行白色&#xff0c;.... 现在小明想知道&#xff0c;从第2…

php公告滚动源码,10行js代码实现上下滚动公告效果方法

本文主要给大家介绍了关于利用10行js代码实现滚动公告效果的相关资料&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#xff0c;需要的朋友们下面随着小编来一起看看吧。希望能帮助到大家。需求在最近的项目中需要实现公…