当前位置: 首页 > wzjs >正文

如何搭建网站的支付接口网站域名虚拟主机

如何搭建网站的支付接口,网站域名虚拟主机,wordpress食品模板下载,网站建设与网页设计期末考试【SQL】常见SQL 行列转换的方法汇总 - 精华版 一、引言二、SQL常见的行列转换对比1. 行转列 Pivoting1.1 ​​CASE WHEN 聚合函数​​1.2 ​​IF 聚合函数​​1.3 ​​PIVOT操作符​​ 2.列转行 Unpivoting2.1 UNION ALL​​2.2 ​​EXPLODE函数(Hive/Spark&#…

【SQL】常见SQL 行列转换的方法汇总 - 精华版

  • 一、引言
  • 二、SQL常见的行列转换对比
    • 1. 行转列 Pivoting
      • 1.1 ​​CASE WHEN + 聚合函数​​
      • 1.2 ​​IF + 聚合函数​​
      • 1.3 ​​PIVOT操作符​​
    • 2.列转行 Unpivoting
      • 2.1 UNION ALL​​
      • 2.2 ​​EXPLODE函数(Hive/Spark)​
      • 2.3 ​​UNPIVOT操作符​​
  • 三、对比总结​​
  • ​​四、总结建议​​

一、引言

  • 近期参加了数据岗位的一些面试(如下图:近几年的面试数据),非常多的同学在简历上会写熟悉、精通SQL,但一旦进行原理性(对应数据开发岗)或者实操性(数据分析、数据产品岗)的沟通和测试,往往表现的不尽如人意。所以打算再开一个【SQL】的专栏,分享一些SQL的知识和技巧。
  • SQL专题往期内容:
    • 【SQL】基于多源SQL 去重方法对比 – 精华版
    • 【SQL】常见SQL 行列转换的方法汇总 - 精华版
      在这里插入图片描述

二、SQL常见的行列转换对比

1. 行转列 Pivoting

1.1 ​​CASE WHEN + 聚合函数​​

  • 实现方式​​:CASE条件判断生成新列,配合MAX/SUM等聚合函数处理数据。
  • 优点​​:兼容性强,适用于所有支持SQL的数据库。
  • 缺点​​:列固定时需手动编写大量条件,动态列处理困难。
# 示例
SELECT name,MAX(CASE WHEN skill='语文' THEN 1 ELSE 0 END) AS is_chinese,MAX(CASE WHEN skill='数学' THEN 1 ELSE 0 END) AS is_math
FROM A 
GROUP BY name;# PS:这里要注意,很多同学写的时候直接case when 就结束了,试想一下结束后的数据结构如下
| 姓名 | 是否语文 | 是否数学 |
| 张三 |  1     |   0     | 
| 张三 |  0     |   1     | # 我们需要的行转列后的一条记录,这也是为什么要用聚合函数再处理的原理
| 姓名 | 是否语文 | 是否数学 |
| 张三 |  1     |   1    | 

1.2 ​​IF + 聚合函数​​

  • ​​实现方式​​:类似CASE WHEN,但语法更简洁
  • 优点​​:语法简化,适合少量固定列。
  • 缺点​​:同case ,注意事项同case。
SELECT name,MAX(IF(course='语文', score, 0)) AS chinese
FROM A 
GROUP BY name;

1.3 ​​PIVOT操作符​​

  • 实现方式​​:专用于行转列的语法,需指定聚合函数和转换列。
  • ​​优点​​:语法简洁,逻辑清晰。
  • 缺点​​:仅支持部分数据库(如SQL Server、Oracle),动态列需结合动态SQL。
SELECT * FROM Sales 
PIVOT (SUM(Amount) FOR Month IN ([Jan-22], [Feb-22])) AS PivotTable;

2.列转行 Unpivoting

2.1 UNION ALL​​

  • 实现方式​​:将多列拆分为多个SELECT子查询后合并。
  • ​​优点​​:兼容性好,适用于所有数据库。
  • 缺点​​:代码冗余,列多时维护困难。
SELECT name, '语文' AS subject, is_chinese AS value FROM A WHERE is_chinese = 1
UNION ALL
SELECT name, '数学' AS subject, is_math FROM B WHERE is_math = 1 

2.2 ​​EXPLODE函数(Hive/Spark)​

  • ​​实现方式​​:将数组或拆分后的字符串转换为多行。
  • 优点​​:简洁高效,适合处理数组或分隔字符串。
  • 缺点​​:仅适用于支持EXPLODE的大数据平台(如Hive)。
SELECT name, subject FROM B 
LATERAL VIEW EXPLODE(SPLIT(subject, ',')) tmp AS subject;

2.3 ​​UNPIVOT操作符​​

  • 实现方式​​:专用于列转行的语法。
  • ​​优点​​:语法直观,逻辑清晰。
  • 缺点​​:仅支持部分数据库(如SQL Server)。

# 示例SQL Server
SELECT name, subject, value FROM A
UNPIVOT (value FOR subject IN (is_chinese, is_math)) AS UnpivotTable;

三、对比总结​​

方法适用场景优势劣势
CASE WHEN简单固定列的行转列所有数据库支持,兼容性强代码冗余,动态列处理困难
PIVOT/UNPIVOT支持该语法的数据库语法简洁,逻辑清晰动态列需结合动态SQL,兼容性差
UNION 系列列转行且列数较少所有数据库支持,简单通用代码冗余,维护成本高
EXPLODE大数据平台中的数组或字符串拆分高效简洁环境受限,仅Hive/Spark等

​​四、总结建议​​

类型优先级
行转列​​PIVOT(若数据库支持) > CASE WHEN
​​列转行UNPIVOT / EXPLODE > UNION ALL
动态列处理结合应用层逻辑生成SQL(如Java/Python拼接),或使用存储过程(偏应用场景,故这里不介绍)
  • 具体选择哪种类型实现,需要根据业务场景下,对应的数据库类型、数据量、列是否固定等等因素综合判断,从而选择相对较优的解。
http://www.dtcms.com/wzjs/550079.html

相关文章:

  • 信用卡网站建设景区类网站
  • 怎么用dw软件做网站龙岗网站建设技术
  • js做的携程网站手机wordpress后台
  • 网站名称 如何注册北京住建网站
  • c 网站开发需要学什么软件物流网
  • 广西钦州网站建设wordpress 用户角色插件
  • 做网站哪家公司好做服装搭配直接售卖的网站
  • 网站建设价格标签免费营销网站制作模板
  • 建筑公司网站怎么设计手机网站图片自适应
  • 做淘宝客网站域名是别人的中国万网官方网站
  • 建立一个网站怎样赚钱企业页面
  • 重庆市两江新区建设管理局网站少儿编程加盟品牌排行榜
  • 阿里巴巴国际站怎么开店网络规划设计师教程第二版 pdf下载地址
  • 造价统计报表在哪个网站上做自学编程做点网站赚钱
  • 柳州网站制作wordpress域名换了打不开
  • 李炎辉网站建设教程已有域名如何在花生壳网站做二级域名托管
  • 建设网站有何要求百度关键词优化怎么做
  • 女人做春梦视频网站如何关闭网站
  • 网站开发的知识wordpress的注册文件在哪个文件夹
  • 网站建设的基本元素网站开发项目推荐
  • 为什么做可信网站安居网站建设
  • 广东省建设注册执业资格中心网站网站开发背景介绍
  • 杭州做网站哪家好广州市花都区网站建设公司
  • 网站服务理念孝感做网站
  • 成都网站建设 今网科技网站建设共享ip
  • 上海高档网站建设如何申请域名和ip地址
  • 集团企业网站建设方案2023网站seo
  • 社保局网站建设意义网站建设规划方书模板
  • 怎么做超链接网站网站地图添加
  • funpinpin建站平台云游戏网页版