#成为 SQL 大师#groupby 中不能有聚合函数

背景

复制代码
select 
    t1.p_date,
    t1.member_id,
    top3_domains,
    CASE WHEN label_code = 'realtime' THEN COLLECT_SET(bayes_first) END as realtime_bys
    from 
    create_top3 t1 
    join consume_profile t2 
    on t1.p_date=t2.p_date 
    and cast(t1.member_id as string)=cast(t2.member_id as string)
    group by 1,2,3,4


报错:
aggregate functions are not allowed in GROUP BY, but found CASE WHEN (t2.`label_code` = 'realtime') THEN collect_set(t2.`bayes_first`) END;

原因&解决方案

你遇到的错误是因为在 GROUP BY 子句中,不能包含聚合函数(如 COLLECT_SET)之外的其他列或表达式。在这种情况下,你可以使用子查询来解决问题。以下是一种修改方法:

复制代码
SELECT 
    t1.p_date,
    t1.member_id,
    top3_domains,
    MAX(CASE WHEN t2.label_code = 'realtime' THEN t2.collect_set_bayes_first END) AS realtime_bys
FROM 
    create_top3 t1 
JOIN 
    (
        SELECT
            p_date,
            member_id,
            label_code,
            COLLECT_SET(bayes_first) AS collect_set_bayes_first
        FROM 
            consume_profile
        WHERE 
            label_code IN ('text_bayes_first_realtime', 'text_bayes_first_short_term', 'text_bayes_first_long_term')
        GROUP BY 
            p_date,
            member_id,
            label_code
    ) t2
ON 
    t1.p_date = t2.p_date 
    AND cast(t1.member_id as string) = cast(t2.member_id as string)
GROUP BY 
    1, 2, 3;

声明:本文章有 AI 辅助

相关推荐
a9511416422 分钟前
golang如何设计分布式ID生成系统_golang分布式ID生成系统设计指南
jvm·数据库·python
2301_782659182 分钟前
Go 中高效过滤结构体切片:基于用户名映射去重的最优实践
jvm·数据库·python
2301_813599552 分钟前
Golang怎么处理HTTP响应_Golang HTTP响应处理教程【对比】
jvm·数据库·python
m0_748839494 分钟前
C#怎么将集合分块处理_C#如何使用Chunk方法【实战】
jvm·数据库·python
21439655 分钟前
Bootstrap制作后台管理系统布局 Bootstrap如何搭建Dashboard框架
jvm·数据库·python
吕源林6 分钟前
Python爬虫怎么获取动态AJAX数据_从浏览器网络控制台分析接口
jvm·数据库·python
m0_6403093010 分钟前
C#怎么实现单例模式 C#如何正确实现线程安全的Singleton单例设计模式【设计模式】
jvm·数据库·python
试试勇气12 分钟前
MySQL--表的操作
数据库·mysql
志栋智能13 分钟前
超自动化运维如何重塑IT组织的核心竞争力?
运维·服务器·网络·数据库·人工智能·自动化
m0_7164300716 分钟前
mysql表锁监控命令_诊断MyISAM表锁定问题的方法
jvm·数据库·python