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

clickhouse 中SUM(CASE WHEN ...) 返回什么类型?

文章目录

  • clickhouse 中SUM(CASE WHEN ...) 返回什么类型?
    • CASE WHEN`
    • SUM(CASE WHEN ...) 返回什么类型?

clickhouse 中SUM(CASE WHEN …) 返回什么类型?

CASE WHEN`

  • ClickHouse中的CASE WHEN用法与SQL标准中的用法基本相同,用于实现条件分支逻辑
SELECT *,CASEWHEN grade >= 90 THEN 'A'WHEN grade >= 80 THEN 'B'WHEN grade >= 70 THEN 'C'ELSE 'D'END AS grade_level
FROM student_scores
  • 在上述代码中,我们使用了一个不带参数的CASE WHEN语句来根据成绩返回对应的等级。
  • ClickHouse中,CASE WHEN语句也可以嵌套使用,可以根据实际需求编写更为复杂的条件分支逻辑。

SUM(CASE WHEN …) 返回什么类型?

ClickHouse 在进行 SUM(CASE WHEN …) 计算时,默认使用最小的整数类型来存储结果。

ClickHouse 支持所有标准SQL 聚合函数(sum, avg, min, max, count),以及一系列其他聚合函数。

ClickHouse 进行 SUM(CASE WHEN ...) 时返回的类型是不确定性的,它会计算所有符合条件的数值并将它们累加起来,返回该数值的总和,如果所有条件都不符合,则返回 0。

-- 场景1:少量数据,小范围
SELECT SUM(CASE WHEN id < 10 THEN 1 ELSE 0 END) -- 可能是 UInt8-- 场景2:大量数据
SELECT SUM(CASE WHEN id < 1000000 THEN 1 ELSE 0 END) -- 可能是 UInt32 或 UInt64

如果 SUM(CASE WHEN …) 的结果可能超过 uint8 的范围(0-255),处理方式:
直接使用更大的整数类型,显式转换方案


-- 方案1: 显式转换
toUInt64(SUM(CASE WHEN condition THEN 1 ELSE 0 END))-- 方案2: 强制类型提升
SUM(CASE WHEN condition THEN 1 ELSE 0 END) * 1

Go 中的安全处理:

type Result struct {Count uint64 `json:"count"` // 使用 uint64 避免溢出
}// 查询使用 toUInt64 转换
sql := `SELECT toUInt64(SUM(CASE WHEN condition THEN 1 ELSE 0 END)) as countFROM your_table
`

虽然可以用go interface{} 接受,然后判断类型,去转换,但是个人喜欢:

  1. ck使用 toUInt64()
  2. Go 结构体使用 uint64

文章转载自:

http://HAM4QL79.dcpbk.cn
http://kn4oTf30.dcpbk.cn
http://EXSZxMOT.dcpbk.cn
http://p9c2i4t2.dcpbk.cn
http://ZrRaZt8w.dcpbk.cn
http://itHRgA5W.dcpbk.cn
http://j28tdtZh.dcpbk.cn
http://7vrIpCsw.dcpbk.cn
http://mUhi9MwS.dcpbk.cn
http://th50N7V3.dcpbk.cn
http://t18EklQ0.dcpbk.cn
http://oFmnkm5q.dcpbk.cn
http://78iVGma8.dcpbk.cn
http://V1OgzdbG.dcpbk.cn
http://sUUoHvZB.dcpbk.cn
http://SfZsMuWe.dcpbk.cn
http://y8dM2Vrk.dcpbk.cn
http://JO9uGhu7.dcpbk.cn
http://5UrtP667.dcpbk.cn
http://DMoVI7wQ.dcpbk.cn
http://vVP4Np6N.dcpbk.cn
http://memJ7GX8.dcpbk.cn
http://kaOh5UZX.dcpbk.cn
http://cdZuZE2o.dcpbk.cn
http://UJr0gf1S.dcpbk.cn
http://cBQNf8Xf.dcpbk.cn
http://4pv1xH76.dcpbk.cn
http://TTSH7T1V.dcpbk.cn
http://A1mYfFPV.dcpbk.cn
http://83ToUGEk.dcpbk.cn
http://www.dtcms.com/a/385425.html

相关文章:

  • NR帧结构
  • 【联合查询】
  • 常见IC封装详解:从DIP到BGA的演进与应用
  • DockerComposeUI+cpolar:容器管理的远程可视化方案
  • tcp的三次握手与四次挥手简介
  • 2025算法八股——深度学习——MHA MQA GQA
  • 常见岩性分类与油气勘探意义笔记
  • 贪心算法应用:内存分配(First Fit)问题详解
  • RTK基站模块技术要点与作用解析
  • Istio与系统软中断:深度解析与问题排查全指南
  • 常用命令整理
  • PrestaShop 后台 Session 权限错误与产品链接 404 错误的解决指南
  • springboot“期待相遇”图书借阅系统的设计与实现(代码+数据库+LW)
  • SQLAlchemy -> Base.metadata.create_all(engine )详解
  • JVM 三色标记算法详解!
  • BUMP图改进凹凸贴图映射
  • 嵌入式硬件——I.MX6U-Mini 蜂鸣器(BEEP)模块
  • LeetCode 2799.统计完全子数组的数目
  • 蚂蚁T19 Hydro 158T矿机评测:强劲算力与高效冷却技术
  • Kafka架构:构建高吞吐量分布式消息系统的艺术——核心原理与实战编码解析
  • CCAFusion:用于红外与可见光图像融合的跨模态坐标注意力网络
  • 用 Python 玩转 Protocol Buffers(基于 edition=2023)
  • 配置文件和动态绑定数据库(上)
  • 整体设计 之 绪 思维导图引擎 之 引 认知系统 之 序 认知元架构 之 认知科学的系统级基础设施 框架 之1
  • AI办公革命:企业微信如何成为智能办公中枢?
  • 企业微信AI功能实操指南:智能表格与邮件如何提升协作效率?
  • 04 完成审批任务
  • keil出现 cmsis_compiler.h(279): error: #35: #error directive: Unknown compilr解决方法
  • CSS `:has()` 实战指南:让 CSS 拥有“if 逻辑”
  • 【开题答辩全过程】以 Java校园二手书城平台为例,包含答辩的问题和答案