MySQL语句进阶记录(四)
文章简介:
1、使用MySQL方法:find_in_set、over、sum、count、round、greatest
2、适用场景:
(1)判断字段是否包含某些字符,亦可以用在表连接的时候判断一个表的字段是否包含另一个表的字段;
(2)按照指定字段排序;
(3)对字段进行累加操作;
(4)保留指定位的小数点;
(5)统计字段在某个条件下的查询数量;
(6)比较两个字段的大小关系,max是获取一个字段的最大值!!!
1、find_in_set使用
# find_in_set(需要查找的字符串,索引字段) 获取字符串在字段中的位置 一般用于where处,判断字段是否包含某个字符串
SELECT name, belts
FROMdivisions
WHERENOT FIND_IN_SET('black', belts);
2、from后为子查询的结果,需要给子查询的结果定义一个名称,否则会报错!!!
# 错误写法,报错信息:Every derived table must have its own alias
select first_name
from (select first_name,row_number() over(order by first_name) as rank_numfrom employees
)
# 正确写法
select a.first_name
from (select first_name,row_number() over(order by first_name) as rank_numfrom employees
) a
3、over函数的使用
统计salary的累计和running_total
/**OVER([PARTITION BY <列清单> ] ORDER BY <排序用列清单> )
*/
# 结合排序函数使用,结果根据salary降序排序
selectemp_no,salary,dense_rank() over(order by salary desc) as t_rank
from salaries
order by t_rank, emp_no;
# 结合sum使用,累加工资
select emp_no,salary,sum(salary) over(order by emp_no)
from salaries
where to_date = "9999-01-01";
4、sum不仅可以统计数值,还能做一定的判断。count仅仅是统计数量不能做判断。
异常的邮件概率
selecte.date,round(sum(e.type="no_completed")*1.0/count(e.type),3) as p
from email e join user u1 on e.send_id = u1.idjoin user u2 on u2.id=e.receive_id
where u2.is_blacklist = 0 and u1.is_blacklist=0
group by e.date
order by e.date;
5、round保留指定小数位
#round(a,b) 对a进行保留b位的小数
# 可看知识点4
6、两个值比较最大值
/**greatest(字段名,字段名) 返回较大值的字段名数据
*/
-- 查询单位下的项目状态为3的项目数以及总投资金额
select -- 单位pi.construction_unit, -- 单位名下项目状态等于3的数量sum(pi.project_status=3) as total_num,-- 单位名下项目状态为3的投资总金额sum(if(pi.project_status=3,greatest(ps.investment_rescriptum_statics, ps.investment_rescriptum_dynamics),0)) as total_investment
FROMproject_info pi JOIN project_single ps ON pi.evid = ps.project_id
group by pi.construction_unit;
MySQL语句进阶记录(四)相关推荐
- MySQL学习记录 (四) ----- SQL数据管理语句(DML)
相关文章: <MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令> <MySQL学习记录 (二) ----- SQL数据查询语句(DQL)> &l ...
- Mysql操作语句进阶
Mysql操作语句进阶 一.综合使用 二.常规设置操作 1.服务器设置远程访问 2.Linux中数据库的基本操作命令 3.备份数据库 4.恢复备份的数据库 5.查询binlog日志是否开启 三.基本操 ...
- mysql 语句块语法_MySQL ------ MySQL常用语句的语法 (三十四)
MySQL常用的语句语法 注意:1. | 符号用来指出几个选中中的一个,因此NULL | NOT NULL 表示给出null 或 not null 2.包含在方括号中的关键字或子句是可选的(如 [li ...
- Mysql期初数和期末数_账户中记录四种核算指标,即期初余额、 本期增加发生额、本期减少发生额和期末余额。其关系式包括( )。_学小易找答案...
[单选题]运算符+* % =中,优先级最低的是( ). (3.0分) [单选题]反映企业所有者投入资金的科目是( ). [单选题]要输出double型的数据,用( ). (3.0分) [单选题]是对形 ...
- mysql删除重复记录语句的方法 作者: 字体:[增加 减小] 类型:转载 时间:2010-06-21 我要评论 查询及删除重复记录的SQL语句,虽然有点乱,但内容还是不错的。 . .
mysql删除重复记录语句的方法 作者: 字体:[增加 减小] 类型:转载 时间:2010-06-21 我要评论 查询及删除重复记录的SQL语句,虽然有点乱,但内容还是不错的. 例如: id name ...
- Mysql学习笔记(基础)基础sql语句详细记录
数据库学习(基础) // 个人网课学习记录,如果有违规等问题,请联系我删除~ mysql下载安装( 解压版安装配置 下载版安装配置 ) 需求分析:使用cmd命令来创建一个数据库,并对数据库中得一张分类 ...
- 100内奇数之和流程图_Python进阶记录之基础篇(四)
回顾 在Python进阶记录之基础篇(三)中,我们介绍了Python中分支结构if语句的相关知识以及输入函数input()的基本用法.if语句在我们日后的编程中会经常使用到,今天我们讲一下另一个重要的 ...
- mysql 语句_如何记录MySQL执行过的SQL语句
很多时候,我们需要知道 MySQL 执行过哪些 SQL 语句,比如 MySQL 被注入后,需要知道造成什么伤害等等.只要有 SQL 语句的记录,就能知道情况并作出对策.服务器是可以开启 MySQL 的 ...
- mysql 怎么查询慢sql语句_Mysql中 查询慢的 Sql语句的记录查找
Mysql中 查询慢的 Sql语句的记录查找 慢查询日志 slow_query_log,是用来记录查询比较慢的sql语句,通过查询日志来查找哪条sql语句比较慢,这样可以对比较慢的sql可以进行优化. ...
最新文章
- 机器学习大神迈克尔 · 乔丹:我讨厌将机器学习称为AI
- python 打印执行命令的参数_python之获取命令行参数
- HTML DOM getElementsByTagName() 方法
- 小程序基础能力~网络
- 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。...
- 如何让您的应用程序进入苹果App Store?(上)
- Zend Studio配置:使用PHP 7进行开发
- java传奇_传奇私服登录器Java版附源代码JAVA多媒体源码下载
- 做自媒体原创视频多平台分发,视频一键发布多平台方法教程
- 学到了林海峰,武沛齐讲的Day17-5 内置函数
- C++程序员专用表白程序让你度过一个美妙的七夕节
- word对齐表格不在一行的文字
- mini-vue之组件的实现和渲染流程 以及局部和全局组件建立的联系
- 电影排行榜(requests + bs4 scrapy)
- 三维建模分享之蒸汽坦克
- 面试大全 | C语言高级部分总结,2.6万字长文
- accept文件上传类型
- linux命令行界面鼠标,有趣的Linux命令:小猫咪追鼠标
- Hexo博客SEO优化-百度收录
- 智能体温检测系统解决方案
热门文章
- [解读] Difference-Seeking Generative Adversarial Network - Unseen Sample Generation
- yum makecache报错信息解决(浪费我大量时间)
- iOS-获取当前网页的 url 和 title 和 html
- 微信分享朋友圈的标题和图片
- Python入门——条件与循环:if、while、for
- 3D游戏引擎剖析【较全面】
- AR试妆魔镜操作演示
- Codeforces Round #666 (Div. 2)E	 Monster Invaders
- 周立功示波器ZDS2024Plus与上位机连接步骤
- 美图笔试题java后台_美图2018秋招Java笔试题