需要将 LIMIT 更改为其他内容
Need to change LIMIT into something else
有没有办法改变 "LIMIT 1" 并获得相同的输出?我必须得到客户的名字,姓氏和数量最多的书
SELECT stud.skaitytojas.name, stud.skaitytojas.surname,
COUNT (stud.skaitytojas.nr) AS quantity
FROM stud.egzempliorius , stud.skaitytojas
WHERE stud.egzempliorius.client = stud.skaitytojas.nr
GROUP BY stud.skaitytojas.nr
ORDER BY quantity DESC
LIMIT 1
Postgres 支持 ANSI 标准 FETCH FIRST 1 ROW ONLY
,因此您可以:
SELECT s.name, s.surname, COUNT(s.nr) AS quantity
FROM stud.egzempliorius e JOIN
stud.skaitytojas s
ON e.client = s.nr
GROUP BY s.name, s.surname
ORDER BY quantity DESC
FETCH FIRST 1 ROW ONLY;
还要注意 table 别名和正确的 JOIN
语法的使用。我也更喜欢在 GROUP BY
中列出 SELECT
中的列,尽管如果 s.nr
是唯一的,那是可选的。
您可以 select 使用 row_number()
数量最多的行
SELECT * FROM (
SELECT * , row_number() over (order by quantity desc) rn FROM (
SELECT stud.skaitytojas.name, stud.skaitytojas.surname, COUNT (stud.skaitytojas.nr) AS quantity
FROM stud.egzempliorius , stud.skaitytojas
WHERE stud.egzempliorius.client = stud.skaitytojas.nr
GROUP BY stud.skaitytojas.name, stud.skaitytojas.surname
) t
) t where rn = 1
如果您想要包含最高数量的并列,请改用 rank()
。
有没有办法改变 "LIMIT 1" 并获得相同的输出?我必须得到客户的名字,姓氏和数量最多的书
SELECT stud.skaitytojas.name, stud.skaitytojas.surname,
COUNT (stud.skaitytojas.nr) AS quantity
FROM stud.egzempliorius , stud.skaitytojas
WHERE stud.egzempliorius.client = stud.skaitytojas.nr
GROUP BY stud.skaitytojas.nr
ORDER BY quantity DESC
LIMIT 1
Postgres 支持 ANSI 标准 FETCH FIRST 1 ROW ONLY
,因此您可以:
SELECT s.name, s.surname, COUNT(s.nr) AS quantity
FROM stud.egzempliorius e JOIN
stud.skaitytojas s
ON e.client = s.nr
GROUP BY s.name, s.surname
ORDER BY quantity DESC
FETCH FIRST 1 ROW ONLY;
还要注意 table 别名和正确的 JOIN
语法的使用。我也更喜欢在 GROUP BY
中列出 SELECT
中的列,尽管如果 s.nr
是唯一的,那是可选的。
您可以 select 使用 row_number()
SELECT * FROM (
SELECT * , row_number() over (order by quantity desc) rn FROM (
SELECT stud.skaitytojas.name, stud.skaitytojas.surname, COUNT (stud.skaitytojas.nr) AS quantity
FROM stud.egzempliorius , stud.skaitytojas
WHERE stud.egzempliorius.client = stud.skaitytojas.nr
GROUP BY stud.skaitytojas.name, stud.skaitytojas.surname
) t
) t where rn = 1
如果您想要包含最高数量的并列,请改用 rank()
。