在没有按所有非聚合列分组的 HAVING 子句中,SELECT
我经常遇到具有 id 列和月份列以及许多其他指标的表。我根据其他列清除了某些行。我只想识别拥有所有 12 个月数据的 ID,所以我执行以下操作:
proc sql;
create table t as
SELECT *
FROM T1
GROUP BY id
HAVING COUNT(id) = 12
quit;
它似乎对我有用,但我想知道这种方法是否有任何危险。我知道我可以加入只有 id 和 id 计数的聚合子查询,但是这种方法更容易向非 sql 用户解释。
一般来说,您可以使用HAVING
仅在语句中包含几个列GROUP BY
且在语句中没有聚合函数的子句SELECT
吗?