select Numcom, Nompr, salair_fix
from (select c.Numcom, c.Nompr, c.salaire_fix,
max(c.salaire_fix) over () as maxs
from commercialv c
) c
where c.salaire_fix = c.maxs;
SELECT numcom, nompr, salaire_fix FROM (
SELECT numcom, nompr, salaire_fix, MAX(salaire_fix) OVER ( ) AS max_salaire_fix
FROM commercialv
) WHERE salaire_fix = max_salaire_fix;
字符串 你也可以使用RANK():
SELECT numcom, nompr, salaire_fix FROM (
SELECT numcom, nompr, salaire_fix, RANK() OVER ( ORDER BY salaire_fix DESC ) AS salaire_fix_rank
FROM commercialv
) WHERE salaire_fix_rank = 1;
型 甚至ROWNUM:
SELECT * FROM (
SELECT numcom, nompr, salaire_fix
FROM commercialv
ORDER BY salaire_fix DESC
) WHERE rownum = 1;
SELECT count(column) as "Sum of Count in column", column from table where column = <some matching criteria>
group by column order by count(column) DESC
5条答案
按热度按时间mefy6pfw1#
不能在
WHERE
子句中使用聚合函数。考虑到你的用例,你可能需要一个子查询:
字符串
合理的是,聚合函数在一个 * 集合 * 上工作。另一方面,
WHERE
子句只能访问 one row 的数据。sr4lhrrt2#
你可以用解析函数做你想做的事情:
字符串
对于您的查询,
where
子句中不允许使用聚合函数。vql8enpb3#
您也可以使用
MAX()
作为窗口函数(如果您喜欢Oracle术语,也可以使用分析函数)来执行此查询:字符串
你也可以使用
RANK()
:型
甚至
ROWNUM
:型
最后一种方法的唯一困难是,即使有最大值为
salaire_fix
的其他行,它也只能得到一行。在这种情况下,前两个查询将得到多行。8ulbf1ek4#
你不能在where子句中使用group函数,所以你可以使用having子句。示例如下:
字符串
dtcbnfnu5#
我在Oracle中发现,当只需要一列时,Oracle不会遵守group。我使用这个语法:
字符串