【发布时间】:2021-10-21 20:21:45
【问题描述】:
我有下表:
| id | date | gap |
|---|---|---|
| 1 | 2020-01-01 | 3 |
| 2 | 2020-01-01 | 5 |
| 3 | 2020-01-01 | 8 |
| 4 | 2020-01-02 | 6 |
| 5 | 2020-01-02 | 10 |
| 6 | 2020-01-02 | 12 |
我想遍历不同的日期并获取具有最高“差距”值的两行。期望的结果:
| id | date | gap |
|---|---|---|
| 2 | 2020-01-01 | 5 |
| 3 | 2020-01-01 | 8 |
| 5 | 2020-01-02 | 10 |
| 6 | 2020-01-02 | 12 |
我尝试了以下方法
DO $$
DECLARE
temprow record;
BEGIN
FOR temprow in
SELECT DISTINCT date
FROM table
LOOP
SELECT *
FROM table
ORDER BY gap DESC
LIMIT 2;
END LOOP;
END;
$$;
给我以下错误:
错误:查询没有结果数据的目的地。
用 RETURN() 包装最后一个 SELECT 语句给出:
错误:RETURN 在返回 void 的函数中不能有参数
我不确定我是否需要一个循环,所以请随意提出一个没有循环的解决方案。
【问题讨论】:
标签: sql postgresql greatest-n-per-group