自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 问答 (1)
  • 收藏
  • 关注

原创 MySQL 计算今年是否为闰年

备注:测试数据库版本为MySQL 8.0一.问题:求今年是否为闰年二.解决方案根据2月份最后一天来判断select day( last_day( date_add( date_add( date_add(current_date, interval - dayofyear(current_date) day), interval 1 day),

2020-10-30 11:21:00 1345

原创 MySQL 计算不包含最大值最小值

备注:测试数据库版本为MySQL 8.0如需要scott用户下建表及录入数据语句,可参考:scott建表及录入数据sql脚本一.问题计算平均数,但希望排除最大和最小值,以减少数据畸偏照成的影响。例如,计算除最高和最低工资外的所有职员的平均工资。二.解决方案通过not in剔除最大和最小值即可select avg(sal) from empwhere sal not in ( (select min(sal) from emp), (select max(sal)

2020-10-29 13:59:41 1176 1

原创 MySQL计算中间值

备注:测试数据库版本为MySQL 8.0如需要scott用户下建表及录入数据语句,可参考:scott建表及录入数据sql脚本一. 问题计算一列数字值的中间值(中间值就是一组有序元素中间成员的值)。例如查找deptno 20中工资的中间数。如下列工资:mysql> select sal from emp where deptno = 20 order by sal;±--------+| sal |±--------+| 800.00 || 1100.00 || 29

2020-10-27 14:09:57 1350

原创 MySQL 生成累计差

备注:测试数据库版本为MySQL 8.0一.需求如果表中既有库存,又有出货记录,根据表type字段来判断,想想求出截止当前出货时间的当前库存测试数据:drop table t;create table t(id int,type varchar(100),amt decimal(15,2));insert into t values (1,'库存',100000.00);insert into t values (2,'出货',2000.00);insert into t values

2020-10-26 10:39:56 622

原创 MySQL 生成累计乘积

备注:测试数据库版本为MySQL 8.0如需要scott用户下建表及录入数据语句,可参考:scott建表及录入数据sql脚本一.需求计算某给数字列的累乘积。其操作方式与“计算累计和”相似,只是使用乘法而不是加法。二.解决方案作为例子,本解决方案中都计算职员工资的累成绩。虽然工资的累成绩没有多大用处,然而可以很容易地把该技巧用于其它更有用的领域。select e.empno,e.ename,e.sal, ( select round(exp(sum(ln(d.sal))))

2020-10-23 14:15:38 1678

原创 MySQL 生成累计和

备注:测试数据库版本为MySQL 8.0如需要scott用户下建表及录入数据语句,可参考:scott建表及录入数据sql脚本一.需求计算某个列中所有值的累计和比如,经常遇到的业务需求就是领导需要看每个月的销售额,已经累计到当月的销售额。解决方案:下面给出了一种解决方案,它展示了如何计算所有职员工资的累计和。代码:select e.ename, e.sal, ( select sum(d.sal) from emp d where d.empno &lt

2020-10-22 11:43:15 630

原创 MySQL 求一个表的个数

备注:测试数据库版本为MySQL 8.0如需要scott用户下建表及录入数据语句,可参考:scott建表及录入数据sql脚本一.需求计算一个表的行数,或计算某个列中值的个数。例如,找到职员总数及每个部门的职员数。二.解决方案计数使用count(*) 即可如果要对表内分组进行计数,可以用group by和count(*)即可count(*)是表的总数,count(列)是列不为空的总数代码:select count(*)from emp;select deptno,count(*)

2020-10-21 13:47:36 826

原创 MySQL 分解IP地址

备注:测试数据库版本为MySQL 8.0一.需求将一个IP地址分解到列中,考虑下面列出的IP地址:111.22.3.4要得到如下所示的查询结构:A B C D111 22 3 4二.解决方案依旧是MySQl自带的substring_index函数即可解决代码:select substring_index(ip,'.',1) A, substring_index(substring_index(ip,'.',2),'.',-1) B, subs

2020-10-20 16:17:10 718

原创 MySQL 提取第n个分隔的子串

备注:测试数据库版本为MySQL 8.0一.需求数据准备create view v5 asselect 'mo,larry,curly' as nameunion allselect 'tina,gina,jaunita,regina,leena' as name;mysql> select * from v5;+--------------------------------+| name |+----------------

2020-10-19 13:48:27 1044

原创 MySQL生成连续数字

MySQL 使用过程当中,经常需要有连续数字的表用来处理一些复杂的报表逻辑,这个blog介绍几种生成连续数字的表方法如下,我需要生成一张表 id连续的从 1-50文章目录一.自定义变量的方法二.存储过程的方法三.MySQL 8.0 With递归方法一.自定义变量的方法构造两个临时表 一个5一个10,通过笛卡尔积可以构造50行记录,即可构造50条记录SELECT @xi:=@xi+1 as xc from (SELECT 1 UNION SELECT 2 UNION SELECT 3

2020-10-16 11:27:17 5340

原创 MySQL 提取字符和数字里面的数字

备注:测试数据库版本为MySQL 8.0一.需求测试数据准备:mysql> create table test1(id int,str varchar(100));Query OK, 0 rows affected (0.02 sec)mysql> insert into test1 values (1,'abc123'),(2,'123abc'),(3,'1abc23'),(4,'abc'),(5,'123');Query OK, 5 rows affected (0.01 se

2020-10-14 14:13:58 2504 1

原创 MySQL按顺序排列字符串

备注:测试数据库版本为MySQL 8.0如需要scott用户下建表及录入数据语句,可参考:scott建表及录入数据sql脚本一.需求对表中的字符串,按字母顺序排列其中的各个字符。例如:±-------+| ename |±-------+| SMITH || ALLEN || WARD || JONES || MARTIN || BLAKE || CLARK || SCOTT || KING || TURNER || ADAMS || JAME

2020-10-13 14:15:46 795

原创 MySQL 将分隔数据转换为多值IN列表

备注:测试数据库版本为MySQL 8.0如需要scott用户下建表及录入数据语句,可参考:scott建表及录入数据sql脚本一.需求已经有了分隔数据,想要将其转换为where子句IN列表中的项目例如:7654,7689,7782,7788要将该字符串用在WHERE子句中,但是下面的SQL语句是错误的,因为EMPNO是一个数值列:select ename,sal,deptnofrom empwhere empno in (‘7654,7689,7782,7788’)因为EMPNO是一个数

2020-10-12 14:27:52 2719

原创 MySQL 根据表中的行创建一个分隔列表

备注:测试数据库版本为MySQL 8.0如需要scott用户下建表及录入数据语句,可参考:scott建表及录入数据sql脚本一.需求原表数据:±-------±-------+| deptno | ename |±-------±-------+| 20 | SMITH || 30 | ALLEN || 30 | WARD || 20 | JONES || 30 | MARTIN || 30 | BLAKE ||

2020-10-12 09:33:41 579

原创 MySQL 提取姓名大写首字母缩写

备注:测试数据库版本为MySQL 8.0文章目录一.需求二.解决方案三.使用MySQL函数一.需求将全名转换为大写首字母缩写,比如下面的名字:Stewie Griffin要求返回如下结果S.G二.解决方案需要注意的就是SQL并不像C或Python语言那样灵活,所以,创建一个通用的解决方案来处理所有格式的姓名对于SQL来说不是一件容易的事情。在这里所介绍的解决方案假定名字都是由名和姓,或是由名、中间名(中间名缩写)及姓组成。代码:-- 2个select case when

2020-10-10 14:04:17 2169

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除