Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 通过查询查找组中的最高计数_Sql_Postgresql_Count_Group By - Fatal编程技术网

Sql 通过查询查找组中的最高计数

Sql 通过查询查找组中的最高计数,sql,postgresql,count,group-by,Sql,Postgresql,Count,Group By,你好,我是postgresql的新手。下面是我对选项进行分组和计数的代码。我想要一种方法,虽然只获得与最大计数的选项。有办法吗 SELECT s.option, COUNT(*) FROM "Set" as s, "Lecture" as l, "Process" as p, "donation" as d WHERE d.code = p.code and l.type = p.type and l.option = s.option GROUP BY s.option 只需给孩子一个名称,

你好,我是postgresql的新手。下面是我对选项进行分组和计数的代码。我想要一种方法,虽然只获得与最大计数的选项。有办法吗

SELECT s.option, COUNT(*)
FROM "Set" as s, "Lecture" as l, "Process" as p, "donation" as d
WHERE d.code = p.code and l.type = p.type and l.option = s.option
GROUP BY s.option
只需给孩子一个名称,例如实例计数,按该名称排序,并限制为1:

如果您想要最高的,您应该将DESC添加到ORDER BY中。如果你想要最低的;不要指定或添加ASC。

只需为子级指定一个名称作为实例计数,按该名称排序,并限制为1:


如果您想要最高的,您应该将DESC添加到ORDER BY中。如果你想要最低的;不要指定或添加ASC。

您可以简化查询。不仅通过使用正确的显式联接语法,而且通过消除Set:


您可以简化查询。不仅通过使用正确的显式联接语法,而且通过消除Set:


Postgre中没有与ties相关的内容。我也不确定是否只有前1行,尽管我可能错了。。。。无论如何,我还是用限制1来代替。@RayO'Donnell:PgSQL中只有FETCH前1行。@WillemVanOnsem很公平,我学到了一些新东西。它和限制1有什么区别吗?@RayO'Donnell:嗯,基于,可能没有。Postgres中没有领带。我也不确定是否只有前1行,尽管我可能错了。。。。无论如何,我还是用限制1来代替。@RayO'Donnell:PgSQL中只有FETCH前1行。@WillemVanOnsem很公平,我学到了一些新东西。它和极限1有什么区别吗?@RayO'Donnell:根据,可能没有。有没有办法使用maxcount?@AthanasiaPavlidou:据我所知,没有办法,因为在原始数据集iirc上使用聚合。有没有办法使用maxcount?@AthanasiaPavlidou:据我所知,没有办法,因为在原始数据集iirc上使用聚合。
SELECT s.option, COUNT(*) AS count -- give the child a name
FROM "Set" as s, "Lecture" as l, "Process" as p, "donation" as d
WHERE d.code = p.code and l.type = p.type and l.option = s.option
GROUP BY s.option
ORDER BY count DESC -- order by that child in descending order
LIMIT 1 -- and limit the output to one row
SELECT l.option, COUNT(*)
FROM "Lecture" l JOIN
     "Process" p
     ON l.type = p.type JOIN
     "donation" d
     ON d.code = p.code
GROUP BY l.option
ORDER BY COUNT(*) DESC
FETCH FIRST 1 ROW ONLY;