我不明白为什么我不能在我的代码中使用它:
public string ITEM_ID { get; set; }
public string ITEM_NAME { get; set; }
public string COMMENT { get; set; }
public string PRIORITY { get; set; }
public string ITEM_ID { get; set; }
搜索了一个答案,但是在有关这些聚合函数的文档中找不到它。
我还收到一个SQL编译器错误“无效的列名“ SMTHNG””。
答案 0 :(得分:1)
您想知道表中的最大SMTHNG是多少:
SELECT MAX(SMTHNG) FROM SomeTable;
这是不包含GROUP BY
的聚合,因此导致一行包含最大SMTHNG。
现在,您还想知道此SMTHNG发生的频率,并添加COUNT(MAX(SMTHNG))
。但是,这不起作用,因为您不能直接聚合聚合。
这也不起作用:
SELECT ANY_VALUE(max_smthng), COUNT(*)
FROM (SELECT MAX(smthng) AS max_smthng FROM sometable) t;
因为子查询仅包含一行,所以现在算来太晚了。
因此,请使用子查询并再次从表中选择:
SELECT ANY_VALUE(smthng), COUNT(*)
FROM sometable
WHERE smthng = (SELECT MAX(smthng) FROM sometable);
或者在寻找最大值之前,根据每个SMTHNG进行计数。这是获取计数的方法:
SELECT smthng, COUNT(*)
FROM sometable
GROUP BY smthng;
从此结果中获取最大收益的最简单方法是:
SELECT TOP(1) smthng, COUNT(*)
FROM sometable
GROUP BY smthng
ORDER BY COUNT(*) DESC;
答案 1 :(得分:0)
像下面那样使用cte或子查询
with cte as
(
select count(*) as cnt ,col from table_name
group by col
) select max(cnt) from cte
您不能在同一列上一次使用双聚合函数
答案 2 :(得分:0)
首先,请阅读我的评论。
根据您要实现的目标,必须更改该语句。
如果您想计算ClassTag[T]
字段中的最大值,则可以尝试以下操作:
SMTHNG