Oracle 中 group by 的使用需要注意的地方

news2024/10/5 13:59:00
1.业务场景

需要将2023年1-12月的数据全部查出,并以行的形式呈现。这里要用到行转列的思路,我采用的是简单的case when函数。在这里插入图片描述

2.group by 的使用方法
WHERE xxx1='xx'
AND xxx2='yy'
group by (除聚合函数以外的所有字段)

举个例子:

select studentName,studentId,avg(score) 
FROM Student
WHERE studentName like '王%'
GROUP BY studentName,studentId
#分组的字段只采用非聚合函数的字段,avg()是聚合函数,故不对其分组
/**
使用了聚合函数后,要分组的原理。
逆向思维:若不用分组,则avg(score)将,score这一列的所有数据全部求平均数后只能得到单列单行的平均分,
有n个学生,却只有一个平均分,该分给谁?分给谁都不对!
因此,在使用聚合函数之后,再使用分组,SQL在执行时,会先对数据表按字段进行分组,然后再求平均分,那么,分组后的每一组都有各自的平均分。如此,逻辑合理。
**/
3.group by 与case when结合
select 
studentName,
studentId,
CASE WHEN studentName like '王%' THEN age END AS case1
,avg(score)
FROM Student
GROUP BY 
studentName,
studentId,
CASE WHEN studentName like '王%' THEN age END	
-- ‘case when’ 只是普通的条件函数,非聚合函数,因此在分组时也要加上该字段,不然会报错!

若不加case when条件进行分组,则报错如下信息:
在这里插入图片描述

小白需注意:
若case when 是聚合函数内的字段或常量或参数,则以聚合函数为先,如下所示:

SUM(
CASE WHEN studentName like '王%' THEN age END AS case1
)

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

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

相关文章

alpha shape 2D点集边缘线提取

Delaunay三角网 alpha shape 2D点集边缘线提取 Delaunay三角网 参考blog: Scipy 笔记 [Geometry] Alpha Shapes - 原理及我的实现Alpha Shape Widyaningrum E , Peters R Y , Lindenbergh R C . Building outline extraction from als point clouds using medial axis transfo…

MATLAB——一维离散小波的单层分解

%% 学习目标:一维离散小波的单层分解 %% clear all; close all; load noissin.mat; [cA,cD]dwt(noissin,sym4); %% cA是近似系数(低频部分),cD是细节系数(高频部分),采用的小波是sym4 f…

2023.10.22 关于 定时器(Timer) 详解

目录 引言 标准库定时器使用 自己实现定时器的代码 模拟实现的两大方面 核心思路 重点理解 自己实现的定时器代码最终代码版本 引言 定时器用于在 预定的时间间隔之后 执行特定的任务或操作 实例理解: 在服务器开发中,客户端向服务器发送请求&#…

Banana Pi BPI-W3(Armsom W3)RK3588开当板之调试UART

前言 本文主要讲解如何关于RK3588开发板UART的使用和调试方法,包括UART作为普通串口和控制台两种不同使用场景 一. 功能特点 Rockchip UART (Universal Asynchronous Receiver/Transmitter) 基于16550A串口标准,完整模块支持以下功能: 支…

【T+】畅捷通T+增加会计科目提示执行超时已过期。

【问题描述】 在畅捷通T软件中, 增加会计科目的时候提示: 通过DataTable插入ext扩展表出错:执行超时已过期。 完成操作之前已超时或服务器未响应。 操作已被用户取消。 语句已终止。 【解决方法】 【方法一】 注销用户登录,回到软件登录界面…

linux入门---多线程的理解

目录标题 线程的认识线程的管理进程和线程的区别为什么要有多线程线程的特性多线程的创建和证明线程特性的补充线程的优点线程的缺点线程的健壮性问题clone函数 线程的认识 在之前的学习中我们知道当一个程序加载进物理内存的时候操作系统会为该程序创建对应的PCB,…

11 Fork/Join

1 分治思想 分治思想:规模为N的问题分解为K个规模的子问题,子问题相互独立且与原问题性质相同,求出子问题的解,就能得到原问题的解 分治思想的步骤: 分解 求解 合并 2 Fork/Join 2.1 介绍 并行计算框架,用…

ROCESS SPID 代表什么进程

ROCESS 发出sql命令 所在主机的进程 可以不在数据库主机上发出 SPID 对应数据库的服务进程id select a.PROCESS,b.SPID From v$session a , v$process b where a.PADDRb.ADDR and a.USERNAMESYS SQL> !ps -ef|grep sqlplus oracle 385 2792 0 21:01 pts/…

继电器测试的方法和步骤有哪些?

继电器测试是一种常见的电气测试方法,用于检测继电器的工作状态和性能,下面是继电器测试的一般方法和步骤: 准备工作:确认测试设备的准备情况,包括测试仪器、电源、继电器和连接线等。确认继电器的工作原理和参数&…

IDEA: 个人主题及字体搭配推荐

文章目录 1. 字体设置推荐2. 主题推荐3. Rainbow Brackets(彩虹括号)4. 设置背景图片 下面是我的 IDEA 主题和字体,它们的搭配效果如下: 1. 字体设置推荐 在使用 IntelliJ IDEA 进行编码和开发时,一个合适的字体设置可以提高你的工作效率和舒…

Spring 最全Bean的加载和获取方式整理

目录 一、 前言二、Bean加载的九种方式1. XML配置方式2. XML注解配置方式3. 注解方式4. 使用Bean方式5. 使用Import方式6. 容器初始化完毕后注入bean7. 实现ImportSelector接口8. 实现ImportBeanDefinitionRegistrar接口9. 实现BeanDefinitionRegistryPostProcessor接口 三、Be…

Verilog功能模块——读写位宽不同的异步FIFO

前言 前面的博文已经讲了异步FIFO和同步FIFO,但并没有实现FIFO的读写位宽转换功能,此功能是FIFO的主要功能之一,应用十分广泛,因此,在前面两个模块的基础上,本文使用纯Verilog实现了读写位宽不同的FIFO&…

Plex踩坑——plex web无法找到媒体服务器

现象:之前安装过plex server,然后卸载了。再次重装后,plex web无法找到媒体服务器。 原因:卸载plex server时需要手动将plex的注册表删除:HKEY_CURRENT_USER\Software\Plex, Inc. 原文链接Uninstall Plex Media Serve…

又是一年1024,你还在做程序猿嘛

每年的10月24日,对于广大程序员来说,都有着特殊的意义。这一天是程序员节,一个属于这个独特群体的庆祝活动。在这个特别的日子里,我们不禁要问:又是一年1024,你还在做程序猿嘛? 程序员&#xff…

MATLAB——一维连续小波的分解

%% 学习目标:一维连续小波的分解 %% help wavelet 查询小波工具箱中的所有函数 %% wavedemo 查看案例 clear all; close all; load noissin.mat; %% which noissin.mat figure; subplot(211); plot(noissin); %信号的时域图 10…

【xxl-job】你与xxl-job仅差这个示例

文章目录 摘要介绍底层使用技术和实现原理分布式任务调度任务执行器分片任务任务调度中心 示例代码详解创建一个任务处理类补充配置文件启动xxl-job执行器,并在任务调度中心中添加一个定时任务在任务调度中心中添加一个定时任务,并选择刚刚创建的任务处理…

只要路由器有WPS按钮,佳能打印机连接到Wi-Fi网络的方法就很简单

佳能打印机是很好的设备,可以让你从智能手机、电脑或平板电脑打印照片。它们还提供其他功能,如扫描文档和复制图像。 最新的型号还允许你连接到Wi-Fi,因此你不需要使用电线将设备连接到打印机。 Wi-Fi是通过本地网络传输数据的标准方式。它…

rstudio server 服务器卡死了怎么办

#rstudio 卡死了怎么办 cd ~/.local/share/ ls rm -fr rstudio.old mv ~/.rstudio ~/.rstudio.oldcd ~/.config/ rm -fr .rstudio.old mv ~/.config/rstudio/ ~/.config/rstudio.oldps -ef|grep t040413 |grep rsession |awk {print $2}| xargs kill -9

itbuilder软件在线设计数据库模型,AI与数据库擦出的火花

今天要介绍一款强大的软件,它就是itBuilder软件,一款在线设计数据库模型软件,借助人工智能提高效率,可以生成CRUD代码并推送至开发工具中;它涵盖了几乎所有语言,如Java、Python、JavaScript等,并…

基于Python开源爬虫框架Scrapy租房信息爬取与数据展示工具

获取代码: 知识付费时代,低价有偿获取代码,请理解! (1) 下载链接: 后发 (2) 添加博主微信获取(有偿),备注来源: mryang511688 (3) 快速扫码咨询: 项目描述 技术:Python、Scrapy、Dj…