我有问题在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
但是这个问题,如果它是最常见的两个值,那就不对了。所以相反,我试着写一个包含最大功能的问题但是无法弄清楚如何,现在有人如何做到这一点?
答案 0 :(得分:3)
我们可以在此处使用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;