SQL ORACLE - 使用 MAX() 选择发表次数最多(最多行)的作者
SQL ORACLE - Selecting author with most publications (most rows) using MAX()
我的 Oracle SQL 脚本有问题。我需要 select 大多数出版物的所有作者(登录名)。如果有更多的登录名和相同数量的出版物,我需要 select 他们全部。
list of publications looks like this:
我需要来使用MAX()函数..到目前为止我已经尝试过这样的事情:
SELECT P.LOGIN, COUNT(*)
FROM PISE P
GROUP BY P.LOGIN, HAVING COUNT(*) >= MAX(PUBLICATIONS)
(
SELECT COUNT(*) AS PUBLICATIONS
FROM PISE P
GROUP BY P.LOGIN
);
导致 ORA-00933:SQL 命令未正确结束
或
SELECT P.LOGIN, COUNT(*) as PUBLICATIONS
FROM PISE P
GROUP BY P.LOGIN HAVING PUBLICATIONS >= MAX(PUBLICATIONS);
导致 ORA-00904:"PUBLICATIONS":标识符无效
或
SELECT P.LOGIN, COUNT(*)
FROM PISE P
WHERE COUNT(*) IN (
SELECT MAX(COUNT(*))
FROM PISE
);
导致 ORA-00934:此处不允许组函数。
This is the result I am looking for
(没有 Jmeno 和 Prijmeni 列)。
使用"with clause"(在版本 11 及更高版本中可用):
with a as (select login, count(*) as cnt from p group by login),
b as (select max(cnt) as max_cnt from a)
select a.login, a.cnt from a, b where a.cnt = b.max_cnt
/
我的 Oracle SQL 脚本有问题。我需要 select 大多数出版物的所有作者(登录名)。如果有更多的登录名和相同数量的出版物,我需要 select 他们全部。 list of publications looks like this:
我需要来使用MAX()函数..到目前为止我已经尝试过这样的事情:
SELECT P.LOGIN, COUNT(*)
FROM PISE P
GROUP BY P.LOGIN, HAVING COUNT(*) >= MAX(PUBLICATIONS)
(
SELECT COUNT(*) AS PUBLICATIONS
FROM PISE P
GROUP BY P.LOGIN
);
导致 ORA-00933:SQL 命令未正确结束
或
SELECT P.LOGIN, COUNT(*) as PUBLICATIONS
FROM PISE P
GROUP BY P.LOGIN HAVING PUBLICATIONS >= MAX(PUBLICATIONS);
导致 ORA-00904:"PUBLICATIONS":标识符无效
或
SELECT P.LOGIN, COUNT(*)
FROM PISE P
WHERE COUNT(*) IN (
SELECT MAX(COUNT(*))
FROM PISE
);
导致 ORA-00934:此处不允许组函数。
This is the result I am looking for
(没有 Jmeno 和 Prijmeni 列)。
使用"with clause"(在版本 11 及更高版本中可用):
with a as (select login, count(*) as cnt from p group by login),
b as (select max(cnt) as max_cnt from a)
select a.login, a.cnt from a, b where a.cnt = b.max_cnt
/