【发布时间】:2016-03-07 16:31:52
【问题描述】:
我想创建一个有 2 个参数的函数。这是我的SELECT 声明:
SELECT CASE
WHEN duration <= 10000000 THEN '00-01 sec'
WHEN duration <= 40000000 THEN '01-04 sec'
WHEN duration <= 100000000 THEN '04-10 sec'
WHEN duration <= 300000000 THEN '10-30 sec'
WHEN duration <= 600000000 THEN '30-60 sec'
ELSE 'more than 60 sec' END AS "Kategorien",
COUNT(*) AS Requestcounter
FROM tablename
WHERE starttime BETWEEN '2016-03-01 00:00:00' AND '2016-03-08 14:00:00'
GROUP BY
(CASE WHEN duration <= 10000000 THEN '00-01 sec'
WHEN duration <= 40000000 THEN '01-04 sec'
ELSE 'more than 60 sec' END);
结果:
Kategorien | requestcounter
------------+----------------
00-01 sec | 2073
01-04 sec | 2
(2 rows)
我想从我的函数中得到这个结果。但我得到了错误:
查询没有结果数据的目的地
这是我的功能:
CREATE OR REPLACE FUNCTION requestcounter(mindate timestamptz,maxdate timestamptz)
RETURNS SETOF integer AS $$
BEGIN
SELECT CASE WHEN duration <= 10000000 THEN '00-01 sec'
WHEN duration <= 40000000 THEN '01-04 sec'
ELSE 'more than 60 sec' END AS "Kategorien",
COUNT(*) AS Requestcounter from tablename where starttime BETWEEN mindate and maxdate
GROUP BY
(CASE WHEN duration <= 10000000 THEN '00-01 sec'
WHEN duration <= 40000000 THEN '01-04 sec'
ELSE 'more than 60 sec' END);
Return;
END;
$$ LANGUAGE plpgsql;
我知道RETURNS SETOF integer 不对,但我不知道如何让它工作?
【问题讨论】:
标签: sql postgresql plpgsql return-type set-returning-functions