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

23 MySQL基本函数、分组查询、多列排序(3)

        上一篇「22 B端产品经理与MySQL基本查询、排序(2)」了解了基本的常识和基本查询以及单列排序。下面介绍常见的基本函数、分组查询以及多列排序:

基本函数

user表 (注:以下SQL语句示例全部基于下面「user表」)

uidunamedepiduageugendermsalhiredate
1张三133200002013/07/12
2李四225150002018/11/23
3王锵137250002012/10/15
4彭昶324150002020/06/12
5王小二228200002017/01/19
6宁笑笑121Null2023/12/13
7陈晨433250002022/04/16
常用函数作用举例解释
COUNT()统计;返回查询的记录总数。
SELECT count(uid) AS contuid FROM user;

返回user表中uid共多少条记录。
AVG()平均值;返回一个表达式的平均值。
SELECT AVG(uage) AS avgage FROM user;
返回user表中uage字段的平均值。
SUM()求和;返回指定字段的总和。
SELECT sum(uage) AS sumage FROM user;
MAX()最大值;返回字段中的最大值。
SELECT MAX(uage) AS largestmage FROM user;
返回user表中uage字段的最大值。
MIN()最小值;返回字段中的最小值。
SELECT MIN(uage) AS minage FROM user;

返回user表中uage字段的最小值。

注:AS 后的字段为查询的结果起得名称。

日期函数作用举例结果
NOW()返回当前日期和时间。
SELECT NOW();
2019-10-07 16:27:44
CURDATE()返回当前日期。
SELECT CURDATE();
2019-10-07
CURRENT_TIME()返回当前时间。
SELECT CURRENT_TIME();
16:27:44
DATE()提取日期。
SELECT DATE("2017-06-15");
2017-06-15
DATEDIFF(d1,d2)计算俩日期之间相隔的天数。
SELECT DATEDIFF('2001-01-01','2001-02-02');
32

注:更多函数使用可参考:「MySQL函数教程」。

分组查询

  • GROUP BY:根据一个或多个列对结果集进行分组。

  • 在分组的列上我们可以使用上述提到的 COUNT, SUM, AVG,等函数。

  • GROUP BY是用于汇总和分析数据的重要工具。

 SELECT depid,count(uid) FROM userGROUP BY depid--查询「user表」中,每个部门的编号以及每个部门下的人数。
SELECT depid,COUNT(*)FROM userWHERE msal>20000GROUP BY depid;--查询「user表」中,每个部门的编号以及每个部门下月薪大于20000的人数。
  • WHERE: 是对分组前记录的条件,如果某行记录没有满足 WHERE 子句的条件,那 么这行记录不会参加分组;

  • HAVING: 是对分组后数据的约束。

 SELECT depid, SUM(msal)FROM userGROUP BY depidHAVING SUM(msal) > 50000;--查询「user表」中,月薪总和大于 50000 的部门编号以及月薪和。

多列排序

  • 多列排序

SELECT * FROM userORDER BY uage ASC, hiredate DESC;--查询「user表」,并将查询的数据先按用户年龄升序排,当年龄相同时再按入职日期降序排。
  • 使用表达式排序

SELECT uname, msal * 12 AS ysalFROM userORDER BY ysal DESC;--查询「user表」中的用户姓名和 用户根据月薪计算的出的年薪,并按年薪降序排序。
  • 使用 NULLS FIRST 或 NULLS LAST 处理 NULL 值。

 SELECT * FROM userORDER BY usal DESC NULLS LAST;--查询「user表」,并将查询的数据按用户薪水降序排,将 NULL 值排在最后。

http://www.lryc.cn/news/411356.html

相关文章:

  • PHP与SEO,应用curl库获取百度下拉关键词案例!
  • MySQL:子查询
  • C++—— IO流
  • vue+node后台处理大文件切片上传--前端部分
  • 【通俗理解】艺术与数学交融
  • 深入探讨 Docker 容器文件系统
  • 《LeetCode热题100》---<4.子串篇三道>
  • 全国区块链职业技能大赛样题第9套前端源码
  • 如何提高编程面试成功率:LeetCode Top 100 问题及解答解析(详细面试宝典)
  • K-近邻和神经网络
  • 用EasyV全景图低成本重现真实场景,360°感受数字孪生
  • 【Golang 面试 - 进阶题】每日 3 题(九)
  • 孟德尔随机化、R语言,报错,如何解决?
  • 一文剖析高可用向量数据库的本质
  • JavaScript青少年简明教程:异常处理
  • 科普文:Lombok使用及工作原理详解
  • 飞致云开源社区月度动态报告(2024年7月)
  • mybatis-plus——实现动态字段排序,根据实体获取字段映射数据库的具体字段
  • redis:Linux安装redis,redis常用的数据类型及相关命令
  • JavaScript 和 HTML5 Canvas实现图像绘制与处理
  • Java之Java基础二十(集合[上])
  • 【C++BFS】1162. 地图分析
  • 实战:安装ElasticSearch 和常用操作命令
  • React-Native 宝藏库大揭秘:精选开源项目与实战代码解析
  • 数据结构:二叉树(链式结构)
  • 召唤生命,阻止轻生——《生命门外》
  • JVM:栈上的数据存储
  • C#实战 - C#实现发送邮件的三种方法
  • 数模原理精解【5】
  • C语言篇——使用运算符将16进制数据反转