文章目录
- 在 clickhouse 中存储嵌套类型的关键字是 Nested, 只支持一级嵌套。数据结构类似于在数据结构类似于在表的单元格里面嵌套“一张表格”,如下图所示:
- 嵌套类型是列存储,本质上是一个多维数组结构, 可以在嵌套字段上使用数组函数。
创建嵌套类型的表
CREATETABLE mydb.student_grades
(
ID UInt64,
Name String,
CourseScore Nested
(
course String,
score Float64
))ENGINE= MergeTree()ORDERBY(ID, Name);
插入读取数据
insertinto mydb.student_grades (ID, Name,`CourseScore.course`,`CourseScore.score`)values(1,'浩轩',['语文','数学'],[95.1,96]),(2,'语轩',['语文','数学'],[94.1,97]);
查询:
SELECT*FROM mydb.student_grades where Name ='浩轩';####################################################
┌─ID─┬─Name─┬─CourseScore.course─┬─CourseScore.score─┐
│ 1 │ 浩轩 │ ['语文','数学'] │ [95.1,96] │
└────┴──────┴────────────────────┴───────────────────┘
SELECT CourseScore.score FROM mydb.student_grades where Name ='浩轩';#####################################
┌─CourseScore.score─┐
│ [95.1,96] │
└───────────────────┘
在嵌套类型上使用数组函数
计算每个人的平均分
SELECT t.Name, arrayReduce('avg', t.CourseScore.score)FROM mydb.student_grades as t;#########################
┌─Name─┬─arrayReduce('avg', CourseScore.score)─┐
│ 浩轩 │ 95.55 │
│ 语轩 │ 95.55 │
└──────┴───────────────────────────────────────┘
标签:
clickhouse
本文转载自: https://blog.csdn.net/qq_42586468/article/details/139080069
版权归原作者 一切如来心秘密 所有, 如有侵权,请联系我们删除。
版权归原作者 一切如来心秘密 所有, 如有侵权,请联系我们删除。