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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.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
postgresql中的计数和最大值组合_Postgresql_Count_Max - Fatal编程技术网

postgresql中的计数和最大值组合

postgresql中的计数和最大值组合,postgresql,count,max,Postgresql,Count,Max,我在postgresql中遇到了一个sql问题,希望能在这里得到一些帮助 我有一个名为visitor的表,其中包含一个名为fk_employee_id的列,fk_employee_id包含1-10之间的不同数字,例如: 1,3,4,6,4,6,7,3,2,1,6,7,6 现在我想找出在本专栏中最常见的值(在本例中为6),我提出了一个似乎能解决我的问题的问题 SELECT fk_employee_id FROM visitor GROUP BY fk_employee_id ORDER BY C

我在postgresql中遇到了一个sql问题,希望能在这里得到一些帮助

我有一个名为visitor的表,其中包含一个名为
fk_employee_id
的列,
fk_employee_id
包含1-10之间的不同数字,例如:

1,3,4,6,4,6,7,3,2,1,6,7,6
现在我想找出在本专栏中最常见的值(在本例中为6),我提出了一个似乎能解决我的问题的问题

SELECT fk_employee_id
FROM visitor
GROUP BY fk_employee_id
ORDER BY COUNT(fk_employee_id) DESC
LIMIT 1

但是,如果两个值是最常见的值,那么这个问题就不对了。因此,我试着写一个包含max函数的问题,但不知道怎么做,现在有人知道怎么做了吗?

我们可以在这里使用
RANK
稍微修改您当前的查询:

WITH cte AS (
    SELECT
        fk_employee_id,
        RANK() OVER (ORDER BY COUNT(*) DESC) rank
    FROM visitor
    GROUP BY fk_employee_id
)

SELECT fk_employee_id
FROM cte
WHERE rank = 1;

我们可以在此处使用
RANK
稍微修改您当前的查询:

WITH cte AS (
    SELECT
        fk_employee_id,
        RANK() OVER (ORDER BY COUNT(*) DESC) rank
    FROM visitor
    GROUP BY fk_employee_id
)

SELECT fk_employee_id
FROM cte
WHERE rank = 1;

@StuartLC这是一个问题,即如果两个或两个以上的fk_员工id因计数最高而并列,如何返回多个
fk_员工id
。@StuartLC告诉我;可悲的是,这几天我看到的大多数问题都是这样的:~(您好,是的,如果有两个最频繁的值,我希望返回,示例值5和6是最频繁的。@StuartLC这是一个问题,即如何返回多个
fk_employee_id
,两个或多个值是否因计数最高而并列。@StuartLC告诉我这一点;遗憾的是,大多数人都是这样这些天我看到的问题:~(嗨,是的,如果有两个最频繁的值,我希望返回,示例值5和6是最频繁的。Thx Tim解决了我的问题,现在我学习了一个新的函数rank:-)@Michael你能通过点击答案左边的绿色复选标记来标记这个答案吗?Thx Tim,这解决了我的问题,现在我学习了一个新的函数秩:-)@Michael你能通过点击答案左边的绿色复选标记来标记这个答案吗?