ich ein Top-10-Filter wie dies tun will:Wie implementiert man einen Top-n-Filter in Monetdb?
SELECT t0."A" AS d0,
t0."B" AS d1,
t0."C" AS d2,
t0."D" AS d3,
SUM(t0."SA") AS m0,
SUM(t0."SB") AS m1
FROM "mock_table_1" AS t0
INNER JOIN ( //the top 10 filter begin here
SELECT t0."D" AS fd,
SUM(t0."SD") AS top
FROM "mock_table_1" AS t0
GROUP BY t0."D"
ORDER BY top ASC
LIMIT 10
) AS p0u1
ON (t0."D" = p0u1.fd) //the top 10 filter end here
GROUP BY t0."A",
t0."B",
t0."C",
t0."D"
HAVING (SUM(t0."X") <= 100000000)
LIMIT 100
aber das funktioniert nicht, da order-by in subquery not avaliable in Monetdb?
Also, was soll ich tun, um diese Top-n-Filter zu implementieren?
Das vereinfachte SQL-Beispiel:
SELECT t0."A" AS d0,
SUM(t0."SA") AS m0
FROM "mock_table_1" AS t0
INNER JOIN ( //the top 10 filter begin here
SELECT t0."D" AS fd,
SUM(t0."SD") AS top_cond
FROM "mock_table_1" AS t0
GROUP BY t0."D"
ORDER BY top_cond ASC
LIMIT 10
) AS top_filter
ON (t0."D" = top_filter.fd) //the top 10 filter end here
GROUP BY t0."A"
LIMIT 100
Was ich hier tun möchte, ist A und SUM (SA) von "mock_table_1" abfragen, wo D in den Top-10-D-Mitglieder und die Top-10-D-Mitglieder bedeutet, dass die Mitglieder des Feldes D, die die smallist SUM (SD)
hier beginnen? http://stackoverflow.com/questions/30641876/monetdb-sql-method-to-locate-or-match-by-the-nearest-value-without-a-top-oder-lim –
Ich kann dir eine hübsche geben einfache Antwort, aber zuerst - bitte verwenden Sie ein _minimal_ Beispiel, dh die einfachste Tabelle und Abfrage, die Sie sich vorstellen können, für die Sie eine "Top-N-Filter" -Abfrage formulieren können. – einpoklum
@einpoklum Sorry, ich gebe diese Abfrage, weil ich dachte, es ist einfach genug, um Sinn zu machen, ich kann es vereinfachen, wenn Sie wollen. – luochen1990