| uId | title | amount | makers | widgets |
1 richard 998 xcorp sprocket
2 swiss 995 ycorp framitz
3 ricky 90 zcorp flobber
4 ricky2 798 xcorp framitz
1 lilrick 390 xcorp sprocket
1 brie 200 mcorp gullywok
1 richard 190 rcorp flumitz
1 brie 490 bcorp sprocket
и т.д ...
Я пытаюсь получить только 3 записи на makers
, верхние 3 amounts
и widgets
, которые они произвели
Вотчто у меня есть:
SELECT amount, makers FROM (SELECT amount, makers, (SELECT count(*) FROM entry as t2
WHERE t2.amount = t1.amount and t2.makers >= t1.makers) AS RowNum
FROM entry as t1
) t3
WHERE t3.RowNum<4 order by amount;
Возвращает ли это то, что мне действительно нужно?Есть ли лучший способ сделать это?Большинство способов, которые я видел, чтобы делать такие вещи, - это объединение и т. Д. Для разрозненных таблиц, вся необходимая информация находится на одной таблице.
Ожидаемый результат:
| uId | title | amounts | makers | widgets |
1 richard 998 xcorp sprocket
41 swiss 995 xcorp widget
989 richard 989 xcorp sprocket
22 swiss 995 ycorp framitz
92 swiss 990 ycorp widget
456 swiss 895 ycorp flobber
344 ricky 490 zcorp flobber
32 tricky 480 zcorp flobber
13 ricky 470 zcorp flobber
и т. Д....
Порядок makers
не так важен, как получение верхних 3 amounts
за каждый makers
и widgets
, которые они предоставили.Количество makers
установлено, всегда будет x
makers