LeetCode-1179. 重新格式化部门表( 627. Swap Salary)。知识点:UPDATE and CASE...WHEN 和 if

SQL集萃(一) Case…When…Then 实现无表字段拼表格 开发过程中,由于自己的sql经验不足,而有些问题通过搜索描述起来又比较复杂,或者问题与结果文不对题,因此写该系列博客,希望通过不断的积累为自己和读者提供一些参考。        业务需求:查询2015年全国、全行业的某终端在用个数、最大负荷、用电量和终端覆盖率。        详细描述:结果以表格形式显示,“全国”列均显示“全国”;行业分为八大行业,该列显示各行业名称,如化工、冶金等; 阅读详情

部门表 Department:

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| id            | int     |
| revenue       | int     |
| month         | varchar |
+---------------+---------+
(id, month) 是表的联合主键。
这个表格有关于每个部门每月收入的信息。
月份(month)可以取下列值 ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]。
 

编写一个 SQL 查询来重新格式化表,使得新的表中有一个部门 id 列和一些对应 每个月 的收入(revenue)列。

查询结果格式如下面的示例所示:

Department 表:
+------+---------+-------+
| id   | revenue | month |
+------+---------+-------+
| 1    | 8000    | Jan   |
| 2    | 9000    | Jan   |
| 3    | 10000   | Feb   |
| 1    | 7000    | Feb   |
| 1    | 6000    | Mar   |
+------+---------+-------+

查询得到的结果表:
+------+-------------+-------------+-------------+-----+-------------+
| id   | Jan_Revenue | Feb_Revenue | Mar_Revenue | ... | Dec_Revenue |
+------+-------------+-------------+-------------+-----+-------------+
| 1    | 8000        | 7000        | 6000        | ... | null        |
| 2    | 9000        | null        | null        | ... | null        |
| 3    | null        | 10000       | null        | ... | null        |
+------+-------------+-------------+-------------+-----+-------------+

注意,结果表有 13 列 (1个部门 id 列 + 12个月份的收入列)。

题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reformat-department-table

审题:将竖着的表查询为分布表。

思考:SELCET 后面是月份。然后按照id排序。

将查询结果分布在其中。

解题:

select id, 
	sum(case when month = 'jan' then revenue else null end) as Jan_Revenue,
	sum(case when month = 'feb' then revenue else null end) as Feb_Revenue,
	sum(case when month = 'mar' then revenue else null end) as Mar_Revenue,
	sum(case when month = 'apr' then revenue else null end) as Apr_Revenue,
	sum(case when month = 'may' then revenue else null end) as May_Revenue,
	sum(case when month = 'jun' then revenue else null end) as Jun_Revenue,
	sum(case when month = 'jul' then revenue else null end) as Jul_Revenue,
	sum(case when month = 'aug' then revenue else null end) as Aug_Revenue,
	sum(case when month = 'sep' then revenue else null end) as Sep_Revenue,
	sum(case when month = 'oct' then revenue else null end) as Oct_Revenue,
	sum(case when month = 'nov' then revenue else null end) as Nov_Revenue,
	sum(case when month = 'dec' then revenue else null end) as Dec_Revenue
from department
group by id
order by id

使用if的方式:

SELECT 
    id, 
    sum( if( month = 'Jan', revenue, null ) ) AS Jan_Revenue,
    sum( if( month = 'Feb', revenue, null ) ) AS Feb_Revenue,
    sum( if( month = 'Mar', revenue, null ) ) AS Mar_Revenue,
    sum( if( month = 'Apr', revenue, null ) ) AS Apr_Revenue,
    sum( if( month = 'May', revenue, null ) ) AS May_Revenue,
    sum( if( month = 'Jun', revenue, null ) ) AS Jun_Revenue,
    sum( if( month = 'Jul', revenue, null ) ) AS Jul_Revenue,
    sum( if( month = 'Aug', revenue, null ) ) AS Aug_Revenue,
    sum( if( month = 'Sep', revenue, null ) ) AS Sep_Revenue,
    sum( if( month = 'Oct', revenue, null ) ) AS Oct_Revenue,
    sum( if( month = 'Nov', revenue, null ) ) AS Nov_Revenue,
    sum( if( month = 'Dec', revenue, null ) ) AS Dec_Revenue
FROM 
    Department
GROUP BY 
    id;

 

SQL之case when then用法详解 case具有两种格式。简单case函数和case搜索函数。 --简单case函数 case sex when '1' then '男' when '2' then '女’ else '其他' end --case搜索函数 case when sex = '1' then '男' when sex = '2' then '女' else '其他' end<... 阅读详情

相关推荐

DW1000芯片实战:如何用UWB技术打造10厘米精度的室内定位系统(附Arduino代码)

本文是一份基于DW1000芯片和UWB技术的实战指南,详细介绍了如何从零构建一个精度可达10厘米的室内定位系统。内容涵盖硬件选型与连接、软件环境配置、核心的双向测距算法实现,并深入探讨了信号干扰抑制、功耗优化等实战挑战,为物联网开发者提供了完整的Arduino代码和部署思路。

root9的博客 497

流程控制:case when

1.定义 在编程语言中我们通过switch语句或者if-else if语句可以实现程序的流程控制。在sql语句中使用case 语法实现流程控制的效果。 2.用法 2.1用于等值判断 第一种用法用于等值判断,类似Java中的switch语句;模板语法如下 CASE 变量|表达式|字段 WHEN 要判断的值1 THEN 返回的值1或语句1 WHEN 要判断的值2 THE...

ycd500756的博客 2021

【VAE学习笔记】全面通透地理解VAE(Variational Auto Encoder)

完整笔记:http://www.gwylab.com/note-vae.html 李宏毅老师的教程视频:https://www.bilibili.com/video/av15889450/?p=33 —————————————————————————————————   依据李宏毅老师的讲解,我整理了一番VAE的笔记。先简单介绍一下VAE,VAE作为一个生成模型,其基本思路是很容易理解的:把一堆真...

a312863063的博客 14万+

深入理解SQL case when

当在用case when 进行多条件处理时,首先case when的处理是惰性的,对买一行,如果判断出一个符合条件,为真, 就进行处理, 就不再往下进行判断。 case   when condition 1  then  1    #   每行, 如果condition  1为真, 则处理为1, 不再继续判断 condition 2,  另外condition 1 和condition

bbbeoy的专栏 1530

保姆级教程:在STM32H750VBT6上跑起来CMSIS-DSP库(基于CubeMX+Keil)

本文详细介绍了在STM32H750VBT6微控制器上配置和运行CMSIS-DSP库的全过程,包括开发环境搭建、CubeMX工程配置、Keil工程设置以及DSP库的实际应用示例。通过FFT频谱分析和音频均衡器等实战案例,展示了如何利用STM32H750VBT6的硬件FPU加速DSP运算,提升实时信号处理性能。

weixin_30236595的博客 457

COCO数据集缺失文件补全方法

本文代码是以目标检测(object detection)和实例分割(instance segmentation)任务的标签文件为例,即文件。其他任务的标签文件内容略有不同,但是图片来源表示字段完全相同,因此代码可通用。另外如果是非2017版本COCO应该也通用。msgspec是一个高性能的序列化和验证库,支持 JSON、MessagePack、YAML 和 TOML 等多种格式。高性能:在常见协议的编码/解码中表现出色,通常比其他库快10-80倍。零成本的模式验证。

qq_46396470的博客 1994

case when then else_CASE 表达式

一、语法及作用使用CASE表达式可以帮助我们解决复杂的查询问题,相当于条件判断的函数,判断每一行是不是满足条件。CASE CASE 表达式会从对最初的WHEN子句中的“< 求值表达式 >”进行求值开始执行。所谓求值,就是要调查该表达式的真值是什么。如果结果为真(TRUE),那么就返回THEN子句中的表达式,CASE表达式的执行到此为止。如果结果不为真,那么就跳转到下一条WHEN子句的求...

weixin_39757122的博客 1334

BK3296蓝牙音频SoC深度评测:如何用这颗芯片打造超低功耗TWS耳机?

本文深度评测BK3296蓝牙音频SoC在TWS耳机中的应用,重点解析其22nm工艺带来的超低功耗优势(A2DP模式仅2.8mA)和3×3mm封装设计。通过芯片架构分析、双麦降噪调优及开发套件使用指南,为工程师提供打造高性能TWS耳机的完整解决方案,显著提升续航和音频质量。

rice5的博客 654

case when的判断顺序_CASE 表达式

一、语法及作用 使用CASE表达式可以帮助我们解决复杂的查询问题,相当于条件判断的函数,判断每一行是不是满足条件。 CASE WHEN (判断表达式) THEN (表达式) WHEN (判断表达式) THEN (表达式) WHEN (判断表达式) THEN (表达式) .... ELSE(表达式) END; CASE 表达式会从对最初的WHEN子句中的“< 求值表达式 >”进行求值开始执行。所谓求值,就是要调查该表达式的真值是什么。如果结果为真...

格子衫 3094

得物(毒)App潮鞋价格波动监控系统实战:从爬虫开发到数据可视化完整指南

本文将带领您从零开始构建一套完整的得物潮鞋价格监控系统,涵盖爬虫开发、数据存储、价格波动分析和可视化展示等全流程技术。我们将使用最新的Python技术栈,包括异步爬虫框架、智能代理池、反爬虫绕过技巧,以及基于机器学习的时间序列预测模型。无论您是想要追踪特定鞋款价格的潮流爱好者,还是希望构建商业级监控系统的开发者,这篇文章都将为您提供切实可行的解决方案。

2201_76125261的博客 2505

北斗导航 | ILS(仪表着陆系统)、MLS(微波着陆系统)和GBAS(地基增强系统)的性能对比

最 早 的 GBAS 系 统 是 **局 域 增 强 系 统(LAAS)**,它是 1990 年由美国 Honeywell 公司 和 NASA 共 同 完 成 的 差 分 GPS(DGPS)演 变 而 来 的。1998 年,LAAS 被 ICAO 采 纳为 GBAS。2009 年 9 月 3 日 Honeywell 公 司 的GBAS 系统通过了 **CAT-I 精密进近着陆系统**的设计认证 ,而 **CAT-II 和 CAT-III 系统的研发和验证工作也正在有序的进行中**

尘世冰封的专栏 3985

1179. 重新格式化部门表(MySQL)(如何行转列)

1 题目 2 MySQL 2.1 方法一(行转列) select id, sum(case when month = 'Jan' then revenue end) as Jan_Revenue, sum(case when month = 'Feb' then revenue end) as Feb_Revenue, sum(case when month = 'Mar...

weixin_43969686的博客 244

GEE:面对对象土地利用分类(结合SNIC、GLCM 和机器学习算法)

本文将介绍在Google Earth Engine中结合SNIC、GLCM和机器学习算法的的土地利用/土地覆盖(LULC)分类方法。结果如下图所示,

养乐多的博客 5615

【SQL_001】case when查询顺序

用case when查询数据,若数据中同时符合多个case when条件,则是按照case when 写的顺序进行匹配。 源数据: 测试结果(雪碧在前) 测试结果(可乐在前) ...

Haaaley's Notebook 1882

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【Mysql】日期、行变列(IF、CASE WHEN THEN)语句总结

获取昨天的日期 日期相减函数 datediff select datediff(curdate(),INTERVAL 1 DAY) ; 删除Person表中重复的Email数据,只保留id最小的一条 delete p1 from Person p1,Person p2 where p1.Email = p2.Email and p1.Id > p2.Id; 换座位,1与2换,3与4换,5保留原来的 COALESCE空值表达式,第一个不为空,返回第一个结束;否则继续判断接下来的数据; s.

qq_40985985的博客 654

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

case when oracle mysql,Group by 与 case when 在数据库中查询出来的实现原理?

SQL> set autot onSQL> set lines 80 pages 50000SQL> select sum(1),case dummy when 'X' then 1 else 2 end x2from dual group by case dummy when 'X' then 1 else 2 end;SUM(1) X----------...

weixin_26886855的博客 134

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

理解case when then else end 的使用

一、 Mysql搜索引擎是行搜索,一行一行往下,所以匹配也是每一行进行匹配,符合条件的返回 1、一列里面进行一次匹配 SELECT (CASE WHEN a.`name`='张三' THEN a.core ELSE 0 END) AS '张三' FROM student a ; 上面的执行过程: 进行匹配的是名字name,首先匹配第一行,name是等于张三,所以返回core...

xxwd12的博客 1万+

[数据库] 一文搞懂case when所有使用场景

前几天,为了给产品分析当前用户数据结构,写sql的时候使用到了case when,今天来总结一下casewhen的使用方法,以此为戒,感觉写的不好请拍砖,感觉写的还可以,给哥们点个赞,或者回复一下,让我意识到我不是一个人在战斗,好了废话不多说了,进入正题。 关于case when的使用情况,我总结下来有三种,第一、等值转换,第二、范围转换,第三、列转行操作。 等值转换 咱们在设计数据库的...

慕容田雨的专栏 5万+

case when 函数的使用实例

先简单说点case函数的概念,case()函数有两种形式,第一种:                       case  when 条件1 then 结果1                                               when 条件2 then 结果2                                                         ...

学渣渣 1万+

MySQL 强大CASE WHEN 语法讲解

1,当前存在这样2张数据表,数据表关系是为,一对多: 讲解1:通过平时的LEFT JOIN(左连接),得到的数据结果是这样: 讲解2:通过发现数据返回不对,接下来通过CASE WHEN 语法完成: 结果:因此就得到了这样每位同学对应的课程的成绩,是不是CASE WHEN 强大啊!...

m0_37082962的博客 5439

深入理解mysql中case when流程控制语句

介绍mysql数据库中case when语句的用法,首先介绍case when语句的基础知识,然后提供了相关例子。比较全面的掌握case when的用法,case when在平时的开发过程中还是使用得比较多的。 文章目录

wh柒八九的博客 2678

CASE WHEN的简单用法

 在sql中判断非A即B类似的表达式时,可以用“case-when”句式来判断。 When judgeexpression as not A is B, 语法:   CASE WHEN conditionTHEN result [WHEN ...] [ELSE result] END   CASE 子句可以用于任何表达式可以有效存在

beautifulsarah的博客 9645
上一篇: LeetCode-627. 交换工资( 627. Swap Salary)。知识点:UPDATE and CASE...WHEN 和 if
下一篇: eclipse新建项目有红叉,项目可以正常启动。解决办法。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值