Я хочу сделать топ-10 фильтр так:Как реализовать верхний n-фильтр в 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
, но это не работает, так как order-by in subquery not avaliable in Monetdb?
Итак, что нужно сделать, чтобы реализовать этот верхний п фильтр?
Упрощенный SQL пример:
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
То, что я хочу сделать здесь для запроса и SUM (SA) от "mock_table_1", где D находится в топ-10-D-членов , а верхние-10-D-членов означает членов поля D, который имеет smallist SUM (SD)
начало здесь? http://stackoverflow.com/questions/30641876/monetdb-sql-method-to-locate-or-match-by-the-nearest-value-without-a-top-or-lim –
Я могу дать вам довольно простой ответ, но сначала - пожалуйста, используйте пример _minimal_, т. е. простейшую таблицу и запрос, о которых вы можете думать, для которых вы можете сформировать запрос «top n filter». – einpoklum
@einpoklum Извините, я даю этот запрос, потому что я думал, что это достаточно просто сделать, я могу упростить его, если вы хотите. – luochen1990