sql - Impala/SQL 如何将所有其他字段放在 group by 语句中?

标签 sql impala

我有一个针对 100 个字段的表按 3 个字段分组的查询。如何在没有连接的情况下将另外 97 个字段放入选择中?

这是我的声明:

select a,b,c,max(d) as max_d
from mytable
group by a,b,c;

我知道以下查询有效,但它非常繁重:(

select mytable.* from
(
    select a,b,c,max(d) as max_d
from mytable
group by a,b,c
) uni
join mytable myt (uni.a=mytable.a AND uni.b=mytable.b AND uni.c=mytable.c AND uni.max_d=mytable.d);

谢谢!!

最佳答案

使用窗口函数:

select t.*
from (select t.*, max(d) over (partition by a, b, c) as max_d
      from mytable t
where d = max_d;

关于sql - Impala/SQL 如何将所有其他字段放在 group by 语句中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52718722/

相关文章:

c# - 处理大型 SQL 选择查询/分块读取 SQL 数据

sql - 创建 JSON 并编辑复杂查询 (oracle 11g)

mysql - 检查 MySQL 查询历史记录的日期和时间

mysql - 如何在配置单元中将时间戳转换为 gmt 格式

mysql - 查询划分数据

database - 错误转换列:0到TIMESTAMP

mysql - SQL varchar 列长度的最佳实践

java - 从 Tomcat 查询 Impala 抛出无效 URL 异常

linux - 没有 Kerberos 的调度 crontab

mysql - 替换 MySQL 数据库中一个表中从起始语句到列结尾的所有内容