Skip to content

Commit 10c1c19

Browse files
committed
Simple gettoptaxa.
1 parent ad483d0 commit 10c1c19

File tree

1 file changed

+21
-19
lines changed

1 file changed

+21
-19
lines changed

function/ti/getdatasettoptaxa.sql

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,37 @@ CREATE OR REPLACE FUNCTION ti.getdatasettoptaxa(
22
_datasetid int,
33
_topx int,
44
_grouptaxa CHARACTER VARYING DEFAULT NULL,
5-
_alwaysshowtaxa CHARACTER VARYING[] DEFAULT NULL)
5+
_alwaysshowtaxa CHARACTER VARYING DEFAULT NULL)
66
RETURNS TABLE (id integer,
77
taxonname character varying,
88
ecologicalgroupid CHAR(4))
99
LANGUAGE sql
1010
AS
1111
$function$
12-
WITH wholesum AS (
13-
SELECT tx.taxonid,
14-
tx.taxonname,
15-
ec.ecolgroupid,
16-
row_number() OVER (ORDER BY SUM(dt.value) DESC) AS index
17-
FROM ndb.samples AS sm
18-
INNER JOIN ndb.data AS dt ON sm.sampleid = dt.sampleid
19-
INNER JOIN ndb.variables AS var ON dt.variableid = var.variableid
20-
INNER JOIN ndb.taxa AS tx ON var.taxonid = tx.taxonid
21-
INNER JOIN ndb.ecolgroups AS ec ON tx.taxonid = ec.taxonid
22-
WHERE var.variableelementid = ANY('{141,166}')
23-
AND sm.datasetid = _datasetid
24-
GROUP BY ec.ecolsetid,
12+
13+
WITH wholesum AS (
14+
SELECT tx.taxonid,
15+
tx.taxonname,
2516
ec.ecolgroupid,
26-
tx.taxonname,
27-
tx.taxonid,
28-
var.variableunitsid
29-
ORDER BY SUM(dt.value) DESC)
17+
row_number() OVER (ORDER BY SUM(dt.value) DESC) AS index
18+
FROM ndb.samples AS sm
19+
INNER JOIN ndb.data AS dt ON sm.sampleid = dt.sampleid
20+
INNER JOIN ndb.variables AS var ON dt.variableid = var.variableid
21+
INNER JOIN ndb.taxa AS tx ON var.taxonid = tx.taxonid
22+
INNER JOIN ndb.ecolgroups AS ec ON tx.taxonid = ec.taxonid
23+
WHERE var.variableelementid = ANY('{141,166}')
24+
AND sm.datasetid = _datasetid
25+
GROUP BY ec.ecolsetid,
26+
ec.ecolgroupid,
27+
tx.taxonname,
28+
tx.taxonid,
29+
var.variableunitsid
30+
ORDER BY SUM(dt.value) DESC)
31+
3032
SELECT taxonid AS id,
3133
taxonname AS taxon,
3234
ecolgroupid AS ecologicalgroupid
3335
FROM wholesum
3436
WHERE index <= _topx
35-
OR taxonname = ANY(_alwaysshowtaxa)
37+
OR taxonname = ANY(SELECT unnest(string_to_array(_datasettypeidlist,',')))
3638
$function$

0 commit comments

Comments
 (0)