clickhouse pivot / unpivot
这里需要使用clickhouse的map操作,需要在21.3+版本
PIVOT:CREATE OR REPLACE TABLE monthly_sales(empid INT, amount INT, month TEXT) ENGINE=Memory(); INSERT INTO monthly_sales VALUES
(1, 10000, 'JAN'),(1, 400, 'JAN'),(2, 4500, 'JAN'),(2, 35000, 'JAN'), (1, 5000, 'FEB'),
(1, 3000, 'FEB'), (2, 200, 'FEB'), (2, 90500, 'FEB'), (1, 6000, 'MAR'), (1, 5000, 'MAR'),
(2, 2500, 'MAR'), (2, 9500, 'MAR'), (1, 8000, 'APR'), (1, 10000, 'APR'), (2, 800, 'APR'),
(2, 4500, 'APR');SET allow_experimental_map_type=1;WITH CAST(sumMap([month], [amount]), 'Map(String, UInt32)') AS map
SELECTempid,map['JAN'] AS JAN,map['FEB'] AS FEB,map['MAR'] AS MAR,map['APR'] AS APR
FROM monthly_sales
GROUP BY empid
ORDER BY empid ASC┌─empid─┬───JAN─┬───FEB─┬───MAR─┬───APR─┐
│ 1 │ 10400 │ 8000 │ 11000 │ 18000 │
│ 2 │ 39500 │ 90700 │ 12000 │ 5300 │
└───────┴───────┴───────┴───────┴───────┘SELECTempid,sumIf(amount, month = 'JAN') AS JAN,sumIf(amount, month = 'FEB') AS FEB,sumIf(amount, month = 'MAR') AS MAR,sumIf(amount, month = 'APR') AS APR
FROM monthly_sales
GROUP BY empid
ORDER BY empid ASC┌─empid─┬───JAN─┬───FEB─┬───MAR─┬───APR─┐
│ 1 │ 10400 │ 8000 │ 11000 │ 18000 │
│ 2 │ 39500 │ 90700 │ 12000 │ 5300 │
└───────┴───────┴───────┴───────┴───────┘UNPIVOT:
CREATE OR REPLACE TABLE monthly_sales(empid INT, dept TEXT, jan INT, feb INT, mar INT,
april INT) ENGINE=Memory();INSERT INTO monthly_sales VALUES (1, 'electronics', 100, 200, 300, 100),
(2, 'clothes', 100, 300, 150, 200),(3, 'cars', 200, 400, 100, 50);SELECTempid,dept,month,sales
FROM monthly_sales
ARRAY JOIN[jan, feb, mar, april] AS sales,splitByString(', ', 'jan, feb, mar, april') AS month
ORDER BY empid ASC┌─empid─┬─dept────────┬─month─┬─sales─┐
│ 1 │ electronics │ jan │ 100 │
│ 1 │ electronics │ feb │ 200 │
│ 1 │ electronics │ mar │ 300 │
│ 1 │ electronics │ april │ 100 │
│ 2 │ clothes │ jan │ 100 │
│ 2 │ clothes │ feb │ 300 │
│ 2 │ clothes │ mar │ 150 │
│ 2 │ clothes │ april │ 200 │
│ 3 │ cars │ jan │ 200 │
│ 3 │ cars │ feb │ 400 │
│ 3 │ cars │ mar │ 100 │
│ 3 │ cars │ april │ 50 │
└───────┴─────────────┴───────┴───────┘参考:
https://docs.snowflake.com/en/sql-reference/constructs/pivot.html
https://kb.altinity.com/altinity-kb-queries-and-syntax/pivot-unpivot
clickhouse pivot / unpivot相关推荐
- SQL Server 2005之PIVOT/UNPIVOT行列转换
SQL Server 2005之PIVOT/UNPIVOT行列转换 作者: NinGoo(http://ningoo.itpub.net) 发表于: 2007.04.18 11:49 分类: SQL ...
- SQL Server 2005之PIVOT/UNPIVOT行列转换(转)
SQL Server2005引入了很多迎合开发者口味的新特性,虽然改动不大,却大大了减少了开发者的工作量,这种替用户考虑的开发思路,值得称赞. 在SQL Server2000中,要实现行列转换,需要综 ...
- SQL Server中行列转换 Pivot UnPivot (转载)
SQL Server中行列转换 Pivot UnPivot PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现PIVOT的一般语法是:PIV ...
- Ms sql pivot unpivot
Ms sql pivot unpivot --建表 create table dbo.orders ( orderid int not null primary key nonclustered,or ...
- JAVA异常记录(ORA-56900:pivot|unpivot 操作内不支持绑定变量)
JAVA中ORA-56900: pivot|unpivot 操作内不支持绑定变量 ORA-56900: pivot|unpivot 操作内不支持绑定变量 使用场景及遇到问题 解决方法:在java中拼好 ...
- oracle unpivot 用法,PIVOT/UNPIVOT的用法
转贴: SQL Server2005引入了很多迎合开发者口味的新特性,虽然改动不大,却大大了减少了开发者的工作量,这种替用户考虑的开发思路,值得称赞. 在SQL Server2000中,要实现行列转换 ...
- isnull pivot server sql_SQLServer行列转换 Pivot UnPivot
PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (-) )AS P ...
- 【转】SQL Server中行列转换 Pivot UnPivot
PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (-) )AS P ...
- SQL Server中行列转换 Pivot UnPivot
PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (-) )AS P ...
最新文章
- 【Android 逆向】Android 进程注入工具开发 ( 远程调用总结 | 远程调用注意事项 )
- (实际开发大数据分析系统)网络爬虫获取数据与销售数据分析系统
- 笔记-企业管理知识-知识管理
- redis的安装和测试
- workbench拓扑优化教程_workbenchds拓扑优化分析.ppt
- 【LeetCode - 122】买卖股票的最佳时机 II(贪心 或 dp)
- linux命令行抓取网页快照-(xvfb+CutyCapt)
- magento 增加一个layout template
- 用css去除chrome、safari等webikt内核浏览器对控件默认样式
- MathType输入框怎么调整
- K3CLOUD表关联
- 双网卡同时上内外网设置教程
- python实现科赫雪花的绘制(最简单)
- (转)[原创]在ios android设备上使用 Protobuf (使用源码方式)
- Win10安装Fliqo翻页时钟屏保
- 坚持学英语 -- 公司前台MM 一日英语小记
- 小精灵家庭理财 v3.01 是什么
- 请简述计算机安全的定义 现,2012年12月考试计算机基础第三次作业.doc
- 使用CStdioFile::ReadString来逐行读取文件
- # R语言——约瑟夫环