Je veux faire un filtre top 10 comme ceci:Comment implémenter un filtre n haut dans 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
mais cela ne fonctionne pas depuis order-by in subquery not avaliable in Monetdb?
Alors, que dois-je faire pour mettre en œuvre ce filtre haut n?
L'exemple SQL simplifié:
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
Ce que je veux faire ici est d'interroger A et SUM (SA) de "mock_table_1" où D est dans le top-10-D-membres , et le haut-10-D-membres désigne les membres du domaine D qui a la SUM smallist (SD)
Commencez ici? http://stackoverflow.com/questions/30641876/monetdb-sql-method-to-locate-or-match-by-the-nearest-value-without-a-top-or-lim –
Je peux vous donner une jolie réponse simple, mais d'abord - veuillez utiliser un exemple _minimal_, c'est-à-dire la table et la requête les plus simples auxquelles vous pouvez penser et pour lesquelles vous pouvez formater une requête "top n filter". – einpoklum
@einpoklum Désolé, je donne cette requête car je pensais que c'est assez simple pour faire le sens, je peux le simplifier si vous le souhaitez. – luochen1990