clickhouse的UInt64类型(countIf() 函数返回)

countIf() 函数

countIf() 是 ClickHouse 中的一个聚合函数,用于条件计数。

bash 复制代码
countIf(condition)

功能

  • 统计满足特定条件的行数
  • 只计算条件为 true 的行
bash 复制代码
-- 统计女性用户数量
SELECT countIf(gender = 'female') as female_count FROM users

-- 统计成功的请求数
SELECT countIf(status = 'success') as successful_requests FROM logs

在 ClickHouse 中,countIf() 函数返回的是 UInt64 类型。

clickhouse的UInt64类型

  • Go 的 uint64 类型可以直接对应 ClickHouse 的 UInt64
  • 使用 sql.NullInt64 可以安全处理可能的 NULL 值
  • 建议进行类型转换和边界值检查
  • 使用 github.com/ClickHouse/clickhouse-go/v2 作为推荐的 ClickHouse Go 驱动
go 复制代码
// ClickHouse 查询
rows, err := conn.Query("SELECT total_count FROM stats")

var stats Stats
for rows.Next() {
    // 直接扫描到 uint64
    err := rows.Scan(&stats.TotalCount)
    // 无需任何额外转换
}

使用 database/sql 接口的推荐方式

go 复制代码
package main

import (
    "database/sql"
    "fmt"
    _ "github.com/ClickHouse/clickhouse-go/v2"
)

type Item struct {
    ID sql.NullInt64 `ch:"id"`  // 推荐使用 sql.NullInt64 处理可能的 NULL 值
}

func main() {
    // 使用 sql.NullInt64 安全接收可能为 NULL 的 UInt64 值
    rows, err := db.Query("SELECT id FROM items")
    if err != nil {
        // 错误处理
    }
    defer rows.Close()

    var item Item
    for rows.Next() {
        err := rows.Scan(&item.ID)
        if err != nil {
            // 错误处理
        }

        if item.ID.Valid {
            fmt.Printf("Valid UInt64 ID: %d\n", item.ID.Int64)
        } else {
            fmt.Println("NULL value encountered")
        }
    }
}
  • 除非有特殊业务需求,否则直接使用 uint64
  • 保持类型一致性
  • 避免不必要的类型转换
  • 提高代码可读性和性能
相关推荐
SelectDB技术团队1 天前
ClickHouse SQL 好学吗?从 MySQL 迁移 Doris 的完整兼容验证
人工智能·sql·mysql·clickhouse·开源·apache doris·增量计算
喵了几个咪2 天前
GoWind UBA 拆解:把 Doris UNIQUE KEY 翻译成 ClickHouse——读数正确性对齐实录
开发语言·后端·clickhouse·微服务·golang·gowind
爱吃火鸡面呀2 天前
MySQL、ClickHouse、Doris、Hive、Spark SQL、Flink SQL 选型对比:优点、缺点与面试话术
hive·mysql·clickhouse
SelectDB技术团队5 天前
SelectDB 架构演进与 ClickHouse 迁移指南
大数据·数据库·clickhouse·云原生·架构·数据分析·apache doris
ClickHouseDB6 天前
使用 ClickHouse 与 Massive 构建实时市场数据应用
clickhouse
秉寒-CHO6 天前
从 ClickHouse 到 StarRocks:我在真实业务中怎么选明细、聚合、主键模型
大数据·clickhouse
IT界的老黄牛7 天前
ClickHouse 运维 SQL 速查:system 表查跑批、内存、合并与磁盘一篇通
大数据·clickhouse·磁盘占用·命令速查·运维排查·system表
wengad8 天前
podman安装clickhouse
clickhouse·podman
l1t11 天前
duckdb、clickhouse、datafusion、cedardb、tableauhyperapi 5种分析型数据库执行递归求数独SQL比较
数据库·sql·clickhouse
l1t11 天前
一个clickhouse易错的语法问题
数据库·sql·clickhouse