【发布时间】:2015-08-10 12:21:33
【问题描述】:
我有一个表 t1,有 4 列:
key, cd, date, result_num
在 SAS 中,我们有以下代码:
PROC SQL;
create table t2 AS
select * from t1
group by key
having date = MAX(date)
order by key, cd;
RUN;
我的印象是,在使用聚合函数(例如 MAX)时选择的所有列都必须在 group by 中或应用聚合函数。我的目标是将此 SAS 代码转换为 SQL,有没有办法在 SQL 中执行此操作(更具体地说是 hiveQL)?
【问题讨论】:
-
这个“SAS 代码”已经是 SQL,因为它在
PROC SQL中。但是,您确实忘记了 order 子句后的分号。你到底在尝试什么? -
抱歉,修正了那个错字。我没有编写此代码,但假设它正在获取每个键的日期最大的行。 @DirkHorsten
-
关于:*我的印象是,使用聚合函数(例如 MAX)时选择的所有列都必须在 group by 中或应用聚合函数。 *SQL 的 SAS 实现允许选择其他变量并将结果合并回来。这可能是一个非常有用的功能,也可能是不受欢迎的功能,具体取决于用户。
标签: sql group-by hive sas proc-sql