考虑以下配置单元查询。
SELECT
id,
name,
min(from_unixtime(unix_timestamp(), 'yyyy_MM_dd_HH_mm_ss')) as SYSDATE
FROM tablename
我使用min
函数的原因是我想在所有记录中使用相同的SYSDATE
。如果我在此处未添加min
,则可能会出现多个SYSDATE
。
运行查询时出错:
An exception was caught.
Error while compiling statement: FAILED: SemanticException [Error 10025]: Line 3:4 Expression not in GROUP BY key 'name'
所以我在查询中添加了GROUP BY
,它确实有效。
SELECT
id,
name,
min(from_unixtime(unix_timestamp(), 'yyyy_MM_dd_HH_mm_ss')) as SYSDATE
FROM tablename
GROUP BY id, name
但如果我有二十个或更多列怎么办?将它们全部添加到GROUP BY
不是不方便吗?为什么我要在这里添加GROUP BY
?我只想在整个记录中保持一致的SYSDATE
。有没有其他方法可以使它工作?
答案 0 :(得分:0)
如果您对性能没有任何顾虑,请尝试使用窗口函数来计算min
:
SELECT
id ,
name ,
min(from_unixtime(unix_timestamp(), 'yyyy_MM_dd_HH_mm_ss')) over(partition by 1) as SYSDATE
FROM tablename