То, что я пытаюсь сделать, - это простой рекомендатель, который должен взять элемент node2 с самым большим взвешенным верхним 40 элементом. Расчет веса происходит от (E.WEIGHT * K.GRADE)
. Теперь этот код успешно возвращает 40 лучших элементов. Однако я не хочу, чтобы E.NODE2
возвращал дубликаты . POSTGRE SQL позволил мне сделать SELECT DISTINCT ON (NODE2) E.NODE2 , (E.WEIGHT * K.GRADE)
. Как я могу сделать то же самое в оракуле?
Полный SQL-запрос;
SELECT *
FROM (SELECT DISTINCT E.NODE2 , (E.WEIGHT * K.GRADE)
FROM KUAISFAST K, EDGES E
WHERE K.ID = 1 AND K.COURSE_ID = E.NODE1 AND E.NODE2 NOT IN(
SELECT K2.COURSE_ID
FROM KUAISFAST K2
WHERE K2.ID = 1
)
ORDER BY( E.WEIGHT * K.GRADE ) DESC) TEMP
WHERE rownum <= 40