开发者社区> 跳楼梯企鹅> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

【SQL刷题】Day3----SQL必会的常用函数专项练习

简介: 【SQL刷题】Day3----SQL必会的常用函数专项练习
+关注继续查看

 

博主昵称:跳楼梯企鹅

创作初心:本博客的初心为与技术朋友们相互交流,每个人的技术都存在短板,博主也是一样,虚心求教,希望各位技术友给予指导。
博主座右铭:发现光,追随光,成为光,散发光;
博主研究方向:渗透测试、机器学习 ;
博主寄语:感谢各位技术友的支持,您的支持就是我前进的动力 ;

学习网站跳转链接:点击这里来和博主一起学习吧


目录

一、 MySQL必会的常用函数

1.MySQL数据库特点

2.常用函数

二、专项练习

1.数字函数

(1)函数

(2)刷题

2.字符串函数

(1)函数

(2)刷题

3.时间函数

(1)函数

(2)刷题

4.系统函数

(1)函数

5.聚合函数

(1)函数

(2)刷题

6.窗口函数

(1)函数

(2)刷题

三、小结


一、 MySQL必会的常用函数

image.gif图片.png

1.MySQL数据库特点

官方定义:

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。

特点:

(1)功能强大

MySQL 中提供了多种数据库存储引擎,各引擎各有所长,适用于不同的应用场合,用户可以选择最合适的引擎以得到最高性能,可以处理每天访问量超过数亿的高强度的搜索 Web 站点。MySQL5 支持事务、视图、存储过程、触发器等。

(2)支持跨平台

MySQL 支持至少 20 种以上的开发平台,包括 Linux、Windows、FreeBSD 、IBMAIX、AIX、FreeBSD 等。这使得在任何平台下编写的程序都可以进行移植,而不需要对程序做任何的修改。

(3)运行速度快

高速是 MySQL 的显著特性。在 MySQL 中,使用了极快的 B 树磁盘表(MyISAM)和索引压缩;通过使用优化的单扫描多连接,能够极快地实现连接;SQL 函数使用高度优化的类库实现,运行速度极快。

(4)支持面向对象

PHP 支持混合编程方式。编程方式可分为纯粹面向对象、纯粹面向过程、面句对象与面向过程混合 3 种方式。

(5)安全性高

灵活和安全的权限与密码系统,允许基本主机的验证。连接到服务器时,所有的密码传输均采用加密形式,从而保证了密码的安全。

(6)成本低

MySQL 数据库开放源代码且无版权制约,是一种完全免费的产品,用户可以直接通过网络下载,自主性及使用成本低。体积小,安装方便。历史悠久,用户使用活跃,遇到问题可以寻求帮助,易于维护。

(7)支持各种开发语言

MySQL 为各种流行的程序设计语言提供支持,为它们提供了很多的 API 函数,包括 PHP、ASP.NET、Java、Eiffel、Python、Ruby、Tcl、C、C++、Perl 语言等。

(8)数据库存储容量大

MySQL 数据库的最大有效表尺寸通常是由操作系统对文件大小的限制决定的,而不是由 MySQL 内部限制决定的。InnoDB 存储引擎将 InnoDB 表保存在一个表空间内,该表空间可由数个文件创建,表空间的最大容量为 64TB,可以轻松处理拥有上千万条记录的大型数据库。

(9)支持强大的内置函数

PHP 中提供了大量内置函数,几乎涵盖了 Web 应用开发中的所有功能。它内置了数据库连接、文件上传等功能,MySQL 支持大量的扩展库,如 MySQLi 等,可以为快速开发 Web 应用提供便利。

2.常用函数

(1)数字函数

(2)聚合函数

(3)字符串函数

(4)日期函数

(5)加密函数

(6)控制流函数

(7)格式化函数

(8)类型转化函数

(9)系统信息函数

(10)开窗函数

以上一共有十种常用函数,我们这次介绍其中的5种最常用

二、专项练习

1.数字函数

(1)函数

数字函数

序号函数含义
1


ABS(x)
image.gif


--返回x的绝对值
image.gif
2


BIN(x)
image.gif


--返回x的二进制(OCT返回八进制,HEX返回十六进制)
image.gif
3


CEILING(x)
image.gif


--返回大于x的最小整数值
image.gif
4


EXP(x)
image.gif


--返回值e(自然对数的底)的x次方
image.gif
5


FLOOR(x)
image.gif


--返回小于x的最大整数值
image.gif
6


GREATEST(x1,x2,...,xn)
image.gif


--返回集合中最大的值
image.gif
7


LEAST(x1,x2,...,xn)
image.gif


--返回集合中最小的值
image.gif
8


LN(x)
image.gif


--返回x的自然对数
image.gif
9


LOG(x,y)
image.gif


--返回x的以y为底的对数
image.gif
10


MOD(x,y)
image.gif


--返回x/y的模(余数)
image.gif
11


PI()
image.gif


--返回pi的值(圆周率)
image.gif
12


RAND()
image.gif


--返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定的值。
image.gif
13


ROUND(x,y)
image.gif


--返回参数x的四舍五入的有y位小数的值
image.gif
14


SIGN(x)
image.gif


--返回代表数字x的符号的值
image.gif
15


SQRT(x)
image.gif


--返回一个数的平方根
image.gif
16


TRUNCATE(x,y)
image.gif


--返回数字x截短为y位小数的结果
image.gif

(2)刷题

题目:

图片.png

 代码:

SELECT
    IF(age < 25 OR age IS NULL, "25岁以下", "25岁及以上") AS age_cut,
    COUNT(id) AS num
FROM
    user_profile
GROUP BY
    age_cut

image.gif

运行结果:

image.gif图片.png

2.字符串函数

(1)函数

字符串函数

序号函数含义

1


ASCII(char)
image.gif


--返回字符的ASCII码值
image.gif
2


BIT_LENGTH(str)
image.gif


--返回字符串的比特长度
image.gif
3


CONCAT(s1,s2...,sn)
image.gif


--将s1,s2...,sn连接成字符串
image.gif
4


CONCAT_WS(sep,s1,s2...,sn)
image.gif


--将s1,s2...,sn连接成字符串,并用sep字符间隔
image.gif
5


INSERT(str,x,y,instr)
image.gif


--将字符串str从第x位置开始,y个字符长的子串替换为字符串instr,返回结果
image.gif
6


FIND_IN_SET(str,list)
image.gif


--分析逗号分隔的list列表,如果发现str,返回str在list中的位置
image.gif
7


LCASE(str)或LOWER(str)
image.gif


--返回将字符串str中所有字符改变为小写后的结果
image.gif
8


LEFT(str,x)
image.gif


--返回字符串str中最左边的x个字符
image.gif
9


LENGTH(s)
image.gif


--返回字符串str中的字符数
image.gif
10


LTRIM(str)
image.gif


--从字符串str中切掉开头的空格
image.gif
11


POSITION(substr,str)
image.gif


--返回子串substr在字符串str中第一次出现的位置
image.gif
12


QUOTE(str)
image.gif


--用反斜杠转义str中的单引号
image.gif
13


REPEAT(str,srchstr,rplcstr)
image.gif


--返回字符串str重复x次的结果
image.gif
14


REVERSE(str)
image.gif


--返回颠倒字符串str的结果
image.gif
15


RIGHT(str,x)
image.gif


--返回字符串str中最右边的x个字符
image.gif
16


RTRIM(str)
image.gif


--返回字符串str尾部的空格
image.gif
17


STRCMP(s1,s2)
image.gif


--比较字符串s1和s2
image.gif
18


TRIM(str)
image.gif


--去除字符串首部和尾部的所有空格
image.gif
19


UCASE(str)或UPPER(str)
image.gif


--返回将字符串str中所有字符转变为大写后的结果
image.gif

(2)刷题

题目:

图片.png

 代码:

SELECT device_id,gender,
case
when age>=25 then '25岁及以上'
when age between 20 and 24 then '20-24岁'
when age<24 then '20岁以下'
else '其他'
end
AS age_cut
FROM user_profile

image.gif

运行结果:

image.gif图片.png

3.时间函数

(1)函数

时间函数

序号函数含义
1


CURDATE()或CURRENT_DATE()
image.gif


--返回当前的日期
image.gif
2


CURTIME()或CURRENT_TIME()
image.gif


--返回当前的时间
image.gif
3


DATE_ADD(date,INTERVAL int keyword)
image.gif


--返回日期date加上间隔时间int的结果(int必须按照关键字进行格式化)
image.gif
4


DATE_FORMAT(date,fmt)
image.gif


--依照指定的fmt格式格式化日期date值
image.gif
5


DATE_SUB(date,INTERVAL int keyword)
image.gif


--返回日期date加上间隔时间int的结果(int必须按照关键字进行格式化)
image.gif
6


DAYOFWEEK(date)
image.gif


--返回date所代表的一星期中的第几天(1~7)
image.gif
7


DAYOFMONTH(date)
image.gif


--返回date是一个月的第几天(1~31)
image.gif
8


DAYOFYEAR(date)
image.gif


--返回date是一年的第几天(1~366)
image.gif
9


DAYNAME(date)
image.gif


--返回date的星期名,如:SELECT DAYNAME(CURRENT_DATE);
image.gif
10


FROM_UNIXTIME(ts,fmt)
image.gif


--根据指定的fmt格式,格式化UNIX时间戳ts
image.gif
11


HOUR(time)
image.gif


--返回time的小时值(0~23)
image.gif
12


MINUTE(time)
image.gif


--返回time的分钟值(0~59)
image.gif
13


MONTH(date)
image.gif


--返回date的月份值(1~12)
image.gif
14


MONTHNAME(date)
image.gif


--返回date的月份名,如:SELECT MONTHNAME(CURRENT_DATE);
image.gif
15


NOW()
image.gif


--返回当前的日期和时间
image.gif
16


QUARTER(date)
image.gif


--返回date在一年中的季度(1~4)
image.gif
17


WEEK(date)
image.gif


--返回日期date为一年中第几周(0~53)
image.gif
18


YEAR(date)
image.gif


--返回日期date的年份(1000~9999)
image.gif

(2)刷题

题目1:

图片.png

 代码:

select
    day(date) as day,
    count(question_id) as question_cnt
from question_practice_detail
where date like '2021-08%'
group by day(date);

image.gif

运行截图:

image.gif图片.png

题目2:

图片.png

代码:

select avg(if(b.device_id is not null,1,0)) as avg_ret
from 
(select distinct device_id,date
from question_practice_detail
)a
left join 
(
select distinct device_id,date_sub(date,interval 1 day) as date 
from question_practice_detail
)b
on a.device_id = b.device_id and a.date = b.date

image.gif

运行结果:

image.gif图片.png

4.系统函数

(1)函数

系统函数

序号函数含义
1


DATABASE()
image.gif


--返回当前数据库名
image.gif
2


BENCHMARK(count,expr)
image.gif


--将表达式expr重复运行count次
image.gif
3


CONNECTION_ID()
image.gif


--返回当前客户的连接ID
image.gif
4


FOUND_ROWS()
image.gif


--返回最后一个SELECT查询进行检索的总行数
image.gif
5


USER()或SYSTEM_USER()
image.gif


--返回当前登陆用户名
image.gif
6


VERSION()
image.gif


--返回MySQL服务器的版本
image.gif

5.聚合函数

(1)函数

聚合函数

序号函数含义
1


AVG(X)
image.gif


--返回指定列的平均值
image.gif
2


COUNT(X)
image.gif


--返回指定列中非NULL值的个数
image.gif
3


MIN(X)
image.gif


--返回指定列的最小值
image.gif
4


MAX(X)
image.gif


--返回指定列的最大值
image.gif
5


SUM(X)
image.gif


--返回指定列的所有值之和
image.gif
6


GROUP_CONCAT(X)
image.gif


--返回由属于一组的列值连接组合而成的结果,非常有用
image.gif

(2)刷题

题目:

image.gif图片.png

 代码:

select a.university,count(b.question_id)/count(distinct(b.device_id)) as avg_answer_cnt from user_profile as a
inner join question_practice_detail as b on a.device_id =b.device_id 
group by a.university

image.gif

运行结果:

image.gif图片.png

6.窗口函数

(1)函数

开窗函数

序号函数含义
1


ROW_NUMBER() OVER()
image.gif


--排序:1,2,3,4
image.gif
2


RANK() OVER()
image.gif


--排序:1,1,3,3,5
image.gif
3


DENSE_RANK() OVER()
image.gif


--排序:1,1,2,2,3,4
image.gif
4


NTILE() OVER()
image.gif


--将有序数据分为N组,记录等级数
image.gif
5


LAG(expr,n) OVER()
image.gif


--返回当前行的前N行的expr的值
image.gif
6


LEAD(expr,n) OVER()
image.gif


--返回当前行 后N行的expr的值
image.gif

(2)刷题

题目:

image.gif图片.png

代码:

Select device_id,
university,
gpa
From (
Select device_id,
university,
gpa,
row_number() over(partition by university order by gpa) as rk
From user_profile
)a
where rk = 1

image.gif

运行截图:

image.gif图片.png

三、小结

学习刷题第三天,一起来学习进步吧

点击右边链接牛客-刷题

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
sqlServer存储过程
1、创建存储过程报错:     'CREATE/ALTER PROCEDURE' 必须是查询批次中的第一个语句。 解决方法: use databaseName 后面要加上一句: GO ...
832 0
SQL Server基础之<存储过程>
原文:SQL Server基础之   简单来说,存储过程就是一条或者多条sql语句的集合,可视为批处理文件,但是其作用不仅限于批处理。本篇主要介绍变量的使用,存储过程和存储函数的创建,调用,查看,修改以及删除操作。
1481 0
0. SQL Server监控清单
原文:0. SQL Server监控清单 数据库服务器的监控可大致分为两类: (1) 状态监控:数据库服务器有没有在健康地运行? (2) 性能监控:健康运行的同时,有没有性能问题?可不可以更快些?   一.
963 0
SQLSERVER存储过程语法详解
SQL SERVER存储过程语法: Create PROC [ EDURE ] procedure_name [ ; number ]     [ { @parameter data_type }         [ VARYING ] [ = default ] [ OUTPUT ]     ] [ ,...n ]   [ WITH     { RECOMPILE | ENCRY
1663 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
用SQL做数据分析
立即下载
SQL Server在电子商务中的应用与实践
立即下载
SQL Sever迁移PG经验
立即下载