sql - 如何使用函数 - MAX(smthng) 和 COUNT(MAX(smthng) 之后
问题描述
我不明白为什么我不能在我的代码中使用它:
SELECT MAX(SMTHNG), COUNT(MAX(SMTHNG))
FROM SomeTable;
搜索了答案,但在有关这些聚合函数的文档中没有找到它。
我还收到一个 SQL 编译器错误“无效的列名“SMTHNG””。
解决方案
您想知道表中的最大 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;
推荐阅读
- sql - 如何从批处理文件执行 Sql 查询
- odoo - odoo - 解释 @api.multi - 记录集
- javascript - 括号中的构造函数调用时未定义Javascript原型函数
- wordpress - WordPress中的文件路径不是默认值
- c# - 如何在 WPF 中激活 UserControl 的所有父级(即一个选项卡)
- sql - 使用 sql 查询从数据库中计算百分比(SQL Management Studio 2012)?
- ruby-on-rails - 使用 Turbolinks 5 和 Rails 5 在页面之间重新加载资产
- keras - 如何在 LSTM 自动编码器中计算带有零填充的输入的 softmax
- sql - 如何查询属性的未配对值
- amazon-s3 - 如何将文件从 AWS EFS 复制到 AWS S3?