Sql 无限制地返回列中最常用的值
我一直在浏览论坛,我看到了大多数答案 限制,我只是想知道如何无限制地返回最频繁的值。示例:您不知道有多少变量具有最高值,也不知道最高值。但您希望显示所有具有最高值的变量 到目前为止,我的代码是Sql 无限制地返回列中最常用的值,sql,sqlite,Sql,Sqlite,我一直在浏览论坛,我看到了大多数答案 限制,我只是想知道如何无限制地返回最频繁的值。示例:您不知道有多少变量具有最高值,也不知道最高值。但您希望显示所有具有最高值的变量 到目前为止,我的代码是 SELECT b.column1, b.column2, count(a.column1) FROM alphabet a LEFT JOIN book b ON a.column1= b.column1 GROUP BY a.column1 ORDER BY count(a.column1) desc;
SELECT b.column1, b.column2, count(a.column1)
FROM alphabet a
LEFT JOIN book b ON a.column1= b.column1
GROUP BY a.column1
ORDER BY count(a.column1) desc;
有没有一种方法可以在不使用限制的情况下返回最频繁的值?解决此类问题的一般模式是将一个值(聚合值或非聚合值)与子查询中选择的最大值进行比较。例如,以下查询应适用于您:
SELECT b.column1, count(a.column1)
FROM alphabet a
LEFT JOIN book b ON a.column1= b.column1
GROUP BY b.column1
having count(a.column1) = (select max(cnt) from (
select count(a2.column1) as cnt
from alphabet a2
group by a2.column1))
该分组依据无效。常规GROUP BY规则说:“如果指定了GROUP BY子句,则SELECT列表中的每个列引用必须标识一个分组列或是一个set函数的参数。”您使用的是哪个dbms?@jarlh SQLiteStudioIt似乎不起作用,在“having count”中出现错误但是我得到的是,sqlite不支持带有子查询的
max
,也不支持量词ALL
。但是,select max(cnt)from(select count(*)as cnt…)。相应地修改了答案。