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

sql行列转换_SQL试题六 行列转换

aaef10de4a96fa34d7a3ad6d7d44157e.png

行列转换

appchanneluser_cnt
36017
xiaomi15
AppStore20
vivo31

如何写一个SQL,输出如下格式的数据:

360xiaomiAppStorevivo
17152031

方法一 :union all

第一步
SELECT user_cnt as '360',0 as 'xiaomi',0 as 'appstore', 0  as 'vivo' 
FROM six_app WHERE appchannel = "360";

438570a8332953d6c99d641bbcf26e9a.png
SELECT 0 as '360',user_cnt as 'xiaomi',0 as 'appstore', 0  as 'vivo' 
FROM six_app WHERE appchannel = "xiaomi";

95307001c2f23302a155e88f0bd96fc2.png
SELECT 0 as '360',0 as 'xiaomi',user_cnt as 'appstore', 0  as 'vivo' 
FROM six_app WHERE appchannel = "appstore";

5a4940499af19128cab4fbd911eef077.png
SELECT 0 as '360',0 as 'xiaomi',0 as 'appstore', user_cnt as 'vivo' 
FROM six_app WHERE appchannel = "vivo";

7106f72bb68af222f245a42f19ecce1c.png
union all 连接,有重复使用all,先查询所有
SELECT * 
FROM(
SELECT user_cnt as '360',0 as 'xiaomi',0 as 'appstore', 0  as 'vivo' FROM six_app WHERE appchannel = "360"
UNION ALL
SELECT 0 as '360',user_cnt as 'xiaomi',0 as 'appstore', 0  as 'vivo' FROM six_app WHERE appchannel = "xiaomi"
UNION ALL
SELECT 0 as '360',0 as 'xiaomi',user_cnt as 'appstore', 0  as 'vivo' FROM six_app WHERE appchannel = "appstore"
UNION ALL
SELECT 0 as '360',0 as 'xiaomi',0 as 'appstore', user_cnt as 'vivo' FROM six_app WHERE appchannel = "vivo"
)tmp
;

94ef58d55bf45bc2590d19766f92c1f6.png
使用sum求和
SELECT SUM(tmp.360) '360',SUM(tmp.xiaomi) 'xiaomi',SUM(tmp.appstore)  'appstore',SUM(tmp.vivo) 'vivo'
FROM(
SELECT user_cnt as '360',0 as 'xiaomi',0 as 'appstore', 0  as 'vivo' FROM six_app WHERE appchannel = "360"
UNION ALL
SELECT 0 as '360',user_cnt as 'xiaomi',0 as 'appstore', 0  as 'vivo' FROM six_app WHERE appchannel = "xiaomi"
UNION ALL
SELECT 0 as '360',0 as 'xiaomi',user_cnt as 'appstore', 0  as 'vivo' FROM six_app WHERE appchannel = "appstore"
UNION ALL
SELECT 0 as '360',0 as 'xiaomi',0 as 'appstore', user_cnt as 'vivo' FROM six_app WHERE appchannel = "vivo"
)tmp
;

b84efde09c5d42d1320154a294908c5b.png

方法二 join

下面使用join方法
SELECT appchannel,user_cnt FROM six_app WHERE appchannel='360';

9cec10895e024493802d9dfffc16143a.png
SELECT appchannel,user_cnt FROM six_app WHERE appchannel='xiaomi';

1bcb17d0ab4a719f6a77ab171c0a3ec7.png
SELECT appchannel,user_cnt FROM six_app WHERE appchannel='appstore';

63185a6007800b4d1c3032c4f43dc65c.png
SELECT appchannel,user_cnt FROM six_app WHERE appchannel='vivo';

5ec7f783d3f67c6fc101ae6cdbe2b419.png
查询所有
SELECT * 
FROM
(SELECT user_cnt FROM six_app WHERE appchannel='360')t1
JOIN
(SELECT user_cnt FROM six_app WHERE appchannel='xiaomi')t2
JOIN
(SELECT user_cnt FROM six_app WHERE appchannel='appstore')t3
JOIN
(SELECT user_cnt FROM six_app WHERE appchannel='vivo')t4
;

575771f3d786e20b5d574b8760ba7954.png
结果
SELECT t1.user_cnt '360',t2.user_cnt 'xiaomi',t3.user_cnt 'appstore',t4.user_cnt 'vivo'
FROM
(SELECT user_cnt FROM six_app WHERE appchannel='360')t1
JOIN
(SELECT user_cnt FROM six_app WHERE appchannel='xiaomi')t2
JOIN
(SELECT user_cnt FROM six_app WHERE appchannel='appstore')t3
JOIN
(SELECT user_cnt FROM six_app WHERE appchannel='vivo')t4
;

9ae06cff10186d0f6794280dfdf7572d.png

相关文章:

  • python周末吃什么_Python学员作品-今天吃什么
  • python bootstrap container宽度_边做边学,PythonDjango实战教程-08-使用Bootstrap样式
  • mac 思科 链路聚合_思科实验:STP生成树实验
  • python案例教程钱毅湘_Python案例教程 清华大学出版社 钱毅湘等 高等学校通识教育系列教材 软件工具 程序设计Python...
  • python赋值法例子_Python学习笔记 第五天
  • 边缘计算架构_KubeEdge架构解读:云原生的边缘计算平台
  • 网络摄像头监控软件_一个交换机能带动多少个网络监控摄像头?
  • unity3d显示c4d材质_学习笔记分享 如何学好C4D
  • 数据窗口中的ole控件 pb_工作表数据与UserForm窗口的交互过程中如何实现数据的精确查找...
  • 商业方向的大数据专业_数学专业大数据方向的本科生,考研时该选择大数据还是管理...
  • 高德地图自动生成轨迹_揭秘高德高精度地图,无人驾驶就靠它了
  • python反序列化总结_Python 反序列化安全问题(二)
  • python可以用于工业机器人编程与操作_如何实现工业机器人编程抓取
  • 前后落差大用什么词语_被双子座追到手,你能忍受恋爱前后的反差吗?
  • sheet中没有getcolumns()方法吗_Excel中Enter键使用技巧,这5种方法你都知道吗
  • 78. Subsets
  • Android单元测试 - 几个重要问题
  • codis proxy处理流程
  • const let
  • CSS 专业技巧
  • CSS居中完全指南——构建CSS居中决策树
  • ES6核心特性
  • Intervention/image 图片处理扩展包的安装和使用
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • NSTimer学习笔记
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • spring + angular 实现导出excel
  • Vue组件定义
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 汉诺塔算法
  • 讲清楚之javascript作用域
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • ​VRRP 虚拟路由冗余协议(华为)
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (安卓)跳转应用市场APP详情页的方式
  • (第27天)Oracle 数据泵转换分区表
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (南京观海微电子)——COF介绍
  • (学习日记)2024.01.19
  • ../depcomp: line 571: exec: g++: not found
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET BackgroundWorker
  • .NET CLR基本术语
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET的微型Web框架 Nancy
  • .net分布式压力测试工具(Beetle.DT)
  • .net图片验证码生成、点击刷新及验证输入是否正确