mysql 多条记录选择一套_2020-11-09-Mysql(练习题第一套)
遗留问题 select语句中的别名问题 group by 中的别名问题
# sql
-表 FACT_DAY_SC
-字段 DEPT_ID varchar(20) 电厂
TJSJ_DATE DATE 日期
FSL number 日发电量
create table FACT_DAY_SC(
DEPT_ID varchar(20),
TJSJ_DATE DATE,
FSL LONG
);
insert into FACT_DAY_SC values ('10001','2020-12-01',113);
insert into FACT_DAY_SC values ('10001','2019-02-01',1233);
insert into FACT_DAY_SC values ('10001','2020-03-01',1453);
insert into FACT_DAY_SC values ('10002','2020-04-01',113);
insert into FACT_DAY_SC values ('10001','2020-05-01',563);
insert into FACT_DAY_SC values ('10002','2020-06-01',4);
insert into FACT_DAY_SC values ('10001','2020-07-01',567);
insert into FACT_DAY_SC values ('10002','2020-08-01',4567);
insert into FACT_DAY_SC values ('10001','2020-09-01',1232);
insert into FACT_DAY_SC values ('10001','2020-10-01',456);
insert into FACT_DAY_SC values ('10001','2020-07-23',678);
insert into FACT_DAY_SC values ('10003','2020-09-2',1247);
insert into FACT_DAY_SC values ('10001','2020-01-2',579);
insert into FACT_DAY_SC values ('10003','2019-01-3',1257);
insert into FACT_DAY_SC values ('10001','2019-01-11',1269);
insert into FACT_DAY_SC values ('10003','2020-01-4',4793);
insert into FACT_DAY_SC values ('10003','2019-01-5',47234);
insert into FACT_DAY_SC values ('10003','2020-04-04',4793);
insert into FACT_DAY_SC values ('10003','2018-01-19',4456783);
insert into FACT_DAY_SC values ('10003','2020-12-01',47123);
1.写出SQL计算出每个单位,每个月的最高发电量
//问题:分析是否按照年来分类
// select substr(cast('2020-01-09' as Date ) , 1,7 ); substr() 函数能截取日期
//substr(string string, int a, int b);函数的理解
//string 需要截取的字符串
a 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取)
b 要截取的字符串的长度
select
DEPT_ID,
substr(DEPT_ID,,6,2) as result ,
max(FSL)
from FACT_DAY_SC
group by DEPT_ID , substr(TJSJ_DATE,6,2) ;
2.求取10001电厂,每日的最高发电量(显示到目前为只每日最高发电量)
//用聚合函数还是使用窗口函数
//好像不行???? 发现问题??? 我用的是long比较的是字典顺序?????
select
*,
max(FSL) over(ORDER BY TJSJ_DATE) as num
from
FACT_DAY_SC
where DEPT_ID ='10001';
//这个是比较的是前后日期最大的日电量
select
DEPT_ID,
TJSJ_DATE,
if(result > FSL , result , FSL) as '日最大用量'
from
(
select
DEPT_ID,
TJSJ_DATE,
FSL,
lead(FSL,1) over( order by FSL ) as result
from
(
select
DEPT_ID,
TJSJ_DATE,
FSL
from FACT_DAY_SC
where DEPT_ID = '10001'
order by TJSJ_DATE
) t1
) t2
3.基于2查询每次打破日最大用电量的日期和发电量
select
TJSJ_DATE,
FSL
from
(
select
DEPT_ID,
TJSJ_DATE,
FSL,
max(FSL) over(order by FSL ) as max_result
from
FACT_DAY_SC
where DEPT_ID = '10001'
) t1
where max_result = t1.FSL
4.查询日期2019-01-11日发电量topN 的电厂
//知识点 序列函数考虑并序
select
DEPT_ID
dense_rank() over(order by FSL )
from FACT_DAY_SC
where TJSJ_DATE = '2019-01-11'
5.计算本年有多少天的SQL?
//知识点回顾SQL中的日期函数 注意使用 cast(' 2020-09-09' as DATE)
datediff(date ,date)+1 比较两个日期之间相差多少天
date_add(date,number) 日期加number
date_sub(date ,number) 日期减number
select datediff('2020-12-31','2020-01-01') +1
6.计算 2019-01月 及 电厂10001 中天数超过平均发电量的天数
//知识点 使用切割函数 substr() 分组
//发现不允许这样用使用子查询
select
count(FSL > avg(FSL))
from
FACT_DAY_SC
where DEPT_ID = '1001' and substr(TJSJ_DATE ,1,7) = '2020-09'
// substr和子查询
select
count(FSL >(select
avg(FSL)
from
FACT_DAY_SC
where DEPT_ID = '10001'
group by DEPT_ID) )
from
FACT_DAY_SC
where DEPT_ID = '10001' and substr(TJSJ_DATE ,1,7) = '2020-09'
image.png
8.指标分析
create table TEST(
DEP_CODE varchar(10),
ITEM_CODE varchar(10),
ITEM_VALUE int
);
insert into TEST values ('单位一','A',100);
insert into TEST values ('单位二','A',200);
insert into TEST values ('单位一','B',300);
insert into TEST values ('单位二','B',300);
insert into TEST values ('单位一','C',350);
insert into TEST values ('单位二','C',300);
select
DEP_CODE,
ITEM_CODE,
ITEM_VALUE
from
TEST
UNION ALL
select
DEP_CODE,
'D' as ITEM_CODE,
sum(if(ITEM_CODE = 'C',-ITEM_VALUE,ITEM_VALUE)) as ITEM_VALUE
from
TEST
group by DEP_CODE
mysql 多条记录选择一套_2020-11-09-Mysql(练习题第一套)相关推荐
- mysql查询数据库第一条记录_SQL获取第一条记录的方法(sqlserver、oracle、mysql数据库)...
Sqlserver 获取每组中的第一条记录 在日常生活方面,我们经常需要记录一些操作,类似于日志的操作,最后的记录才是有效数据,而且可能它们属于不同的方面.功能下面,从数据库的术语来说,就是查找出每组 ...
- oracle sql取查询结果第一条,SQL获取第一条记录的方法(sqlserver、oracle、mysql数据库)...
Sqlserver 获取每组中的第一条记录 在日常生活方面,我们经常需要记录一些操作,类似于日志的操作,最后的记录才是有效数据,而且可能它们属于不同的方面.功能下面,从数据库的术语来说,就是查找出每组 ...
- java每秒向mysql写一条记录_【Java】mysql一条记录在高并发场景下读写?
CREATE TABLE `user_info` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `balance` decimal(10,2) DE ...
- mysql 每条记录大小_计算数据库中各个表的数据量和每行记录所占用空间
很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tablespaceinfo ( nameinfo VARCHAR(500) , row ...
- mysql两条记录合成一条数据_踩坑记录之csv数据导入MySQL
可能采坑的操作 将excel表格转换成csv 逗号分隔,然后notepad检查文件是否是utf8编码,保存. 打开 phpMyAdmin , 选择要导入的表格,然后点击导入: 导入设置 点击执行之后, ...
- mysql 多条记录判断相加减进行计算
code pay payflag 00001 100.00 0 00001 50.00 1 00001 50.00 0 00002 ...
- mysql两条记录合成一条数据
如果,有一个人有两个角色,如果想要将两个角色合并该如何呢? 答案:使用 group_concat函数 注:group_concat只有与group by语句同时使用才能产生效果 SELECT acc. ...
- Java练习题第一套知识点
标识符 1>标识符由大小写字母, 下划线, 数字, $符号组成. 2>开头可以是大小写字母, 下划线, 和$符号.(数字不能开头) 3>标识符长度没有限制 4>标识 ...
- 【超简单】MySQL存储引擎的选择与配置
[超简单]MySQL存储引擎的选择与配置 存储引擎简介 MySQL中的数据用各种不同的技术存储在文件(或内存)中.每一种技术都使用不同的存储机构,索引技巧,锁定水平并且最终提供广泛的不同的功能和能力. ...
最新文章
- Oracle内部错误ORA-07445:[_memcmp()+88] [SIGSEGV]一例
- python 异常处理中try else语句的使用
- 全国省市编码_地区编码
- POJ2236(并查集)
- 0中断优先级_西门子S7-200 SMART中断及中断指令概述
- 跟我一起学.NetCore之静态文件处理的那些事
- centos7安装oracle12c 二
- 《Python编程从入门到实践》记录之Python处理CSV文件数据
- 导出库的版本_了解 JavaScript 模块系统基础知识,搭建自己的库
- 恭喜您被选为CSDN插件内测用户:点此领取福利
- 剑指offer面试题[12]-打印1到最大的n位数
- 获取一些系统和用户的通用属性
- .Net 1.1 到 .Net 2.0 开发日志
- spark SQL压缩入门
- 物联网数据分发利器DPS
- ollvm源码分析之控制流扁平化(3)
- Java比较器-学习
- php连接mysql MariaDB_PHP+MariaDB数据库操作基本技巧
- WebStorm中TODO的作用
- 镜头焦距和视角大小计算
热门文章
- 解决使用Servlet输出乱码问题(一行代码解决一切)
- php 方法里用外部变量的值,PHP实现函数内修改外部变量值的方法示例
- pythonopencv图像形态_Python+OpenCV图像处理之其他形态学操作
- 在java中goto是意思,关于Java中的goto语句
- CentOS卸载OpenJDK并安装Sun JDK
- 化浆池是什么东西_一种双工位浆化池的制作方法
- css 实现标签切换,CSS_纯CSS实现Tab切换标签效果代码,本文实例讲述了纯CSS实现Tab切 - phpStudy...
- php查询文件名,php怎么查询文件名
- python导出dxf图_在PDMS中使用python直接生成管口方位图(开源分享第三集)
- 【转】Windows编程之滚动条—滚动条消息