mysql 坚向变横向_(排班表一)使用SQL语句使数据从坚向排列转化成横向排列

知识重点:

1.extract(day from schedule01::timestamp)=13

Extract 属于 SQL 的 DML(即数据库管理语言)函数,同样,InterBase 也支持 Extract,它主要用于从一个日期或时间型的字段内抽取年、月、日、时、分、秒数据,因此,它支持其关健字 YEAR、MONTH、DAY、HOUR、MINUTE、SECOND、WEEKDAY、YEARDAY。

Extract 的使用语法为:

EXTRACT(关健字 FROM 日期或时间型字段)

如:extract(year from schedule01)=2017从日期中提取年份

2.max()函数:取最大值

3.case()函数的嵌套

注意嵌套case()函数时,每个case的开始和结束。

排班功能:现有两个人员(A和B),他们在不同日期的值班状态(state)不同,现在要查询他们在2017.6月的值班信息

表结构如下:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 CREATE TABLE public.temp_schedule2

3 (4

5 id integer NOT NULL DEFAULT nextval('temp_schedule_id_seq'::regclass),6

7 schedule01 timestamp without time zone,--日期8

9 schedule03 character varying(255),--姓名10

11 state character varying(255),--值班状态(0休 1班)12

13 CONSTRAINT temp_schedule_pkey PRIMARY KEY (id)14

15 )

View Code

1.查询SQL语句:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 select schedule03,schedule01,state fromtemp_schedule2

3 where extract(year from schedule01)=2017 and extract(month from schedule01)=6

4

5 order by schedule03,schedule01;

View Code

显示为:

ee085b7c75bd8f302b49bf41cfd79f17.png

2.现在需要根据(6月的)日期,从1号开始根据人员名称横向合并排列数据(即只显示两行)

显示效果如下:

2c9603098e752d7b323cbff849354a20.png

实现的SQL语句如下:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 select schedule03 asname2

3 ,max(case when extract(day from schedule01::timestamp)=1 then state end) asday14

5 ,max(case when extract(day from schedule01::timestamp)=2 then state end) asday26

7 ,max(case when extract(day from schedule01::timestamp)=3 then state end) asday38

9 ,max(case when extract(day from schedule01::timestamp)=4 then state end) asday410

11 ,max(case when extract(day from schedule01::timestamp)=5 then state end) asday512

13 ,max(case when extract(day from schedule01::timestamp)=6 then state end) asday614

15 ,max(case when extract(day from schedule01::timestamp)=7 then state end) asday716

17 ,max(case when extract(day from schedule01::timestamp)=8 then state end) asday818

19 ,max(case when extract(day from schedule01::timestamp)=9 then state end) asday920

21 ,max(case when extract(day from schedule01::timestamp)=10 then state end) asday1022

23 ,max(case when extract(day from schedule01::timestamp)=11 then state end) asday1124

25 ,max(case when extract(day from schedule01::timestamp)=12 then state end) asday1226

27 ,max(case when extract(day from schedule01::timestamp)=13 then state end) asday1328

29 fromtemp_schedule30

31 where extract(year from schedule01)=2017 and extract(month from schedule01)=6

32

33 group by schedule03;

View Code

3.将人员的值班状态通过汉字(0休 1班)显示出来,显示效果如下:

5ef0818de4a376cc64170076e8889010.png

SQL语句(主要是实现case的嵌套):

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 select schedule03 asname2

3 ,max(case when extract(day from schedule01::timestamp)=1 then (case when state='0' then '休' else '班' end) end) asday14

5 ,max(case when extract(day from schedule01::timestamp)=2 then (case when state='0' then '休' else '班' end) end) asday26

7 ,max(case when extract(day from schedule01::timestamp)=3 then (case when state='0' then '休' else '班' end) end) asday38

9 ,max(case when extract(day from schedule01::timestamp)=4 then (case when state='0' then '休' else '班' end) end) asday410

11 ,max(case when extract(day from schedule01::timestamp)=5 then (case when state='0' then '休' else '班' end) end) asday512

13 ,max(case when extract(day from schedule01::timestamp)=6 then (case when state='0' then '休' else '班' end) end) asday614

15 ,max(case when extract(day from schedule01::timestamp)=7 then (case when state='0' then '休' else '班' end) end) asday716

17 ,max(case when extract(day from schedule01::timestamp)=8 then (case when state='0' then '休' else '班' end) end) asday818

19 ,max(case when extract(day from schedule01::timestamp)=9 then (case when state='0' then '休' else '班' end) end) asday920

21 ,max(case when extract(day from schedule01::timestamp)=10 then (case when state='0' then '休' else '班' end) end) asday1022

23 ,max(case when extract(day from schedule01::timestamp)=11 then (case when state='0' then '休' else '班' end) end) asday1124

25 ,max(case when extract(day from schedule01::timestamp)=12 then (case when state='0' then '休' else '班' end) end) asday1226

27 ,max(case when extract(day from schedule01::timestamp)=13 then (case when state='0' then '休' else '班' end) end) asday1328

29 fromtemp_schedule30

31 where extract(year from schedule01)=2017 and extract(month from schedule01)=6

32

33 group by schedule03 ;

View Code

知识一点点的累积,技术一点点的提高!加油!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python增加子类的参数_python 子类向父类传递关键字参数

父类构造函数class SoapClient(object):"""Simple SOAP Client (simil PHP)"""def __init__(self, locationNone, actionNone, namespace,certNone, proxyNone, nsNone,soap_nsNone, wsdlNone, wsdl_basedir, ca_certsNone,sessionsFalse, soap_…

LeetCode 1897. 重新分配字符使所有字符串都相等

文章目录1. 题目2. 解题1. 题目 给你一个字符串数组 words(下标 从 0 开始 计数)。 在一步操作中,需先选出两个 不同 下标 i 和 j,其中 words[i] 是一个非空字符串,接着将 words[i] 中的 任一 字符移动到 words[j] 中…

2015/4/14课堂练习

1.设计题目 书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示: 本     数量 折扣 …

python 图片背景前景分离_【绝了】用 Python 把朋友头像变表情包!

正文在日常生活中,我们经常会存取一些朋友们的丑照,在这个项目中,我们以萌萌哒的熊猫头作为背景,然后试着在背景图上加入朋友们的照片,效果如下图所示。实现步骤导入朋友的照片(前景照片);处理前景照片(缩放…

LeetCode 1899. 合并若干三元组以形成目标三元组

文章目录1. 题目2. 解题1. 题目 三元组 是一个由三个整数组成的数组。 给你一个二维整数数组 triplets ,其中 triplets[i] [ai, bi, ci] 表示第 i 个 三元组 。 同时,给你一个整数数组 target [x, y, z] ,表示你想要得到的 三元组 。 为了…

mysql snowflake_雪花算法-snowflake

雪花算法-snowflake分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID&a…

nrf52832芯片手册_nRF52832低功耗问题不完全总结

0.前言技术和经历经验都有限,以下内容仅供初学者参考和个人总结记录,不定期更新。都是使能协议栈开启BLE广播的情况协议栈:s132_nrf52_6.1.1SDK:nRF5_SDK_15.3.0_59ac3451.进入低功耗方式nRF52832进入低功耗或保持低功耗方式比较简…

openpyxl 读写 excel

import openpyxl book openpyxl.load_workbook(b.xlsx) # 读取 # sheet book["name_tab"] sheet book.active # rowsheet.max_row # 行数 columnsheet.max_column # 列数 print(row) print(column) for r in range(2, row1): # 跳过表头,行号是从1开…

iOS开发周报-- 第一期

从Java转iOS第一个项目总结 http://www.cocoachina.com/ios/20150417/11595.html icon设计探讨:图标,文字,还是图标加文字? http://www.cocoachina.com/design/20150414/11552.html 为什么整个互联网行业都缺CTO http://www.cocoa…

mysql 连接 内存溢出_mysql - MySQL中止连接未知错误 - 堆栈内存溢出

我使用多jdbc执行全表查询以进行数据迁移。 当我使用并行的75个jdbc查询每个表有近3000000行的差异表时,我发现MySQL在所有数据返回到jdbc之前中止了一个连接。慢日志:Time: 160919 9:09:38UserHost: test[test] [10.142.90.20]Thread_id: 349 Schema: …

opengl计算帧率_或许是迄今为止第一篇讲解 fps 计算原理的文章吧

前言fps,是 frames per second 的简称,也就是我们常说的“帧率”。在游戏领域中,fps 作为衡量游戏性能的基础指标,对于游戏开发和手机 vendor 厂商都是非常重要的数据,而计算游戏的 fps 也成为日常测试的基本需求。目前…

041、基于CNN的样式迁移

之——基于CNN的滤镜 目录 之——基于CNN的滤镜 杂谈 正文 1.基于CNN的样式迁移 2.实现 杂谈 通过CNN的特征提取,可以实现将一个图片的样式模式特征迁移到另一张图像上。 正文 1.基于CNN的样式迁移 就是在某些层的输出上用其他的图片进行监督。 2.实现 一般来…

LeetCode 483. 最小好进制(二分查找)

文章目录1. 题目2. 解题1. 题目 对于给定的整数 n, 如果 n 的 k(k>2)进制数的所有数位全为1,则称 k(k>2)是 n 的一个好进制。 以字符串的形式给出 n, 以字符串的形式返回 n 的 最小 好进制。 示例 1&#xff…

rds for mysql的监控指标_mysql(RDS)常用性能指标监控

Mysql1.1.1监控指标说明主要针对SQL耗时、吞吐量(QPS TPS)命中率 锁等待等指标进行监控。本来运维工具产品有以下参数:(global status里面的状态量)TPS/QPS连接数每秒SQL执行次数全表扫描数InnoDB缓冲池命中率InnoDB缓冲池使用率/脏块率InnoDB逻辑读排序记录数InnoD…

numpy 随机数_TF+Numpy减少随机性的影响

有这么一个段子:深度学习论文有一半不公开源代码,另外公开源代码的一半复现不了,鬼知道作者怎么把结果搞得这么牛逼的.其中一个原因就是深度学习使用了大量的随机数,就我一般使用的PythonTensorFlow环境而言,Python的随机性来自于numpy,而TensorFlow在初始化参数的时候也是使用…

LeetCode LCS 01. 下载插件

文章目录1. 题目2. 解题1. 题目 小扣打算给自己的 VS code 安装使用插件,初始状态下带宽每分钟可以完成 1 个插件的下载。 假定每分钟选择以下两种策略之一: 使用当前带宽下载插件将带宽加倍(下载插件数量随之加倍) 请返回小扣完成下载 n …

ASCII字符集中的功能/控制字符

转载:ASCII字符集中的功能/控制字符 Function/Control Code/Character in ASCII 【什么是 Function Code 功能码或 Function Character 功能字符】 ASCII 字符集,大家都知道吧,最基本的包含了 128 个字符。其中前 32 个, 0-31 ,即…

mysql chown_chown -R mysql:mysql ./及chown详解

chown -R mysql:mysql ./及chown详解,当我们在不通过yum(CentOS)、apt-get(Ubuntu)来安装MySQL的时候,通常执行以下命令来改变目录的拥有者:[rootlocalhost ~]# chown -R mysql:mysql ./那?这两个mysql谁是用户名谁是用户组呢&am…

LeetCode LCS 02. 完成一半题目(计数+排序)

文章目录1. 题目2. 解题1. 题目 有 N 位扣友参加了微软与力扣举办了「以扣会友」线下活动。 主办方提供了 2*N 道题目,整型数组 questions 中每个数字对应了每道题目所涉及的知识点类型。 若每位扣友选择不同的一题,请返回被选的 N 道题目至少包含多少种…

opensip db mysql_opensip和opensip_cp安装配置

一,opensip安装1,老老实实安装各种库,我在这里吃了点亏:yum install gcc makeyum install flex bison ncurses libncurses-dev ncurses-develyum install mysql mysql-server mysql-libs mysql-devel2,下载opensip&…