Oracle中pivot函数图文实例详解
作者:实泽有之,无泽虚之 发布时间:2023-07-12 22:13:49
【基本介绍】
【格式】:pivot(聚合函数 for 需要转为列的字段名 in(需要转为列的字段值))
【说明】:实现将指定字段的字段值转换为列的效果。
【环境】:如下图是样例展示所使用的oracle版本。
【准备样例数据】
样例数据如下图所示:
NAME-学生姓名,SUBJECT-考试科目,GRADES-考试成绩。
【样例展示1】
实行如下sql语句:
select * from T_Student_Grades
pivot
(
sum(grades)
for name in('张三','李四','王五')
)
返回结果如下:按指定科目统计所有学生的总成绩,并将学生姓名字段行转列显示(此时虽然用到了聚合函数sum,由于SUBJECT字段也一并显示,因此sum函数并没有起到效果,显示依旧是每一个学生的各科具体成绩)。
【样例展示2】
实行如下sql语句:
select * from T_Student_Grades
pivot
(
avg(grades)
for name in ('张三' as 张三,'李四' as 李四,'王五' as 王五)
)
返回结果如下:按指定科目统计所有学生的平均成绩,并将学生姓名字段行转列,显示别名(此时虽然用到了聚合函数avg,由于SUBJECT字段也一并显示,因此avg函数并没有起到效果,显示依旧是每一个学生的各科具体成绩)。
【样例展示3】
实行如下sql语句:
select * from (select name,grades from T_Student_Grades)
pivot
(
sum(grades)
for name in ('张三','李四','王五')
)
返回结果如下:统计每一个学生的所有科目总成绩,并将学生姓名字段行转列(SUBJECT字段没有显示)。
【样例展示4】
实行如下sql语句:
select * from T_Student_Grades
pivot
(
max(grades)
for name in ('张三' as 张三,'李四' as 李四,'王五' as 王五)
)
where subject='数学'
返回结果如下:按指定科目统计所有学生的最高成绩,并将学生姓名字段行转列,并且只显示数学这一科目的成绩(此时虽然用到了聚合函数max,由于SUBJECT字段也一并显示,因此max函数并没有起到效果,依旧是显示每一个学生的各科具体成绩)。
【样例展示5】
实行如下sql语句:
select * from T_Student_Grades
pivot
(
min(grades)
for name in ('张三' as 张三,'李四' as 李四,'王五' as 王五)
)
where 张三='90'
返回结果如下:按指定科目统计所有学生的最低成绩,并将学生姓名字段行转列,并且只显示数学这一科目的成绩(此时虽然用到了聚合函数max,由于SUBJECT字段也一并显示,因此max函数并没有起到效果,依旧是显示每一个学生的各科具体成绩)。
【样例展示6】
实行如下sql语句(in中使用子查询):
select * from T_Student_Grades
pivot
(
count(grades)
for name in (select distinct name from T_Student_Grades)
)
报错提示:ORA-00936:确实表达式,如下图所示,看来in不支持子查询。
来源:https://blog.csdn.net/qq_40018576/article/details/128287105
猜你喜欢
- 这篇文章主要介绍了python解析命令行参数的三种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- Pytorch 使用GPU训练使用 GPU 训练只需要在原来的代码中修改几处就可以了。我们有两种方式实现代码在 GPU 上进行训练方法一 .
- python使用ctypes调用C/C++1. ctpes介绍ctypes is a foreign function library fo
- Yahoo和Google都有自己的建设高性能网站最佳实践, 我不做赘述, 需要了解的自行查阅资料:Yahoo的: Best Practice
- 每个PHP脚本都限制了执行时间,所以我们需要通过 set_time_limit 来设置一个脚本的执行时间为无限长;然后使用 flush()
- vscode 中 python 提示警告错误,但是还是能跑起来代码:Import "playwright.sync_api&quo
- 一、运算符 . [] () 属性存取及函数调用 delete new typeof + - ! 一元运算符 * / % 乘法,除法,取模 +
- 1.MySQL的安装(1)双击我们去官网下载好的MySQL(2) 一直点下一步,直到遇到以下界面(3)选择Typical,会进行跳转,点击I
- 一、介绍事务是数据库中的一个非常重要的概念,它是指由一系列操作所组成的逻辑单位,在这个单位内,要么所有操作都成功完成,要么所有操作都不会执行
- Python读写文件模式 1、r 打开只读文件,该文件必须存在。 2、r+ 打开可读写的文件,该文件必须存在。 3、w 打开只写文件,若文件
- 一、需要的参数1、通讯用户:touser 或 通讯组:toparty2、企业ID:corpid3、应用ID/密钥:agentId,secre
- 本文实例讲述了Python统计文件中去重后uuid个数的方法。分享给大家供大家参考。具体如下:利用正则表达式按行获取日志文件中的的uuid,
- #!/usr/bin/env python import os, sys, time while True: time.sleep(3) t
- With语句是什么?有一些任务,可能事先需要设置,事后做清理工作。对于这种场景,Python的with语句提供了一种非常方便的处理方式。一个
- Pandas中对 时间 这个属性的处理有非常非常多的操作。而本文对其中一个大家可能比较陌生的方法进行讲解。其他的我会陆续上传。应用情景是这样
- 前言为了满足用户渠道推广分析和用户账号绑定等场景的需要,公众平台提供了生成带参数二维码的接口。使用该接口可以获得多个带不同场景值的二维码,用
- 作为课代表,经常要做的两件事是:帮忙发作业和帮忙收作业,而且很多时候是通过邮件来完成的,如果手动一封一封的收取和发送就很浪费时间——人生苦短
- 前言Pillow库有很多用途,本文使用Pillow来生成随机的验证码图片。Pillow的用法参考:https://www.jb51.net/
- 自定义可迭代的类列表可以获取列表的长度,然后使用变量i对列表索引进行循环,也可以获取集合的所有元素,且容易理解。没错,使用列表的代码是容易理
- 协程的定义协程(Coroutine),又称微线程,纤程。(协程是一种用户态的轻量级线程)作用:在执行 A 函数的时候,可以随时中断,去执行