我想用2个参数创建一个函数。这是我的SELECT
声明:用SELECT CASE创建函数
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)
我想从我的函数这一结果。但我得到的错误:
query has no destination for result data
这是我的函数:
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
是不对的,但我不知道如何得到这个工作?
Thx为您提供帮助! requestcounter --------------------(“00-01 sec”,2979)(“01-04 sec”,2)这是我的结果 - 有可能它看起来像这样:Kategorien | requestcounter ------------ + ---------------- 00-01 sec | 2073 01-04 sec | 2?最好的问候 这样我有2列? – liquid
@cartmanownz:用'SELECT * FROM ...'调用你的函数来分解行。 –
非常感谢你!我用postgres 9.3.8来试试这个 - 它有效,但是8.4有一个问题。你知道为什么吗? – liquid