Извините, если это глупый вопрос. Я могу заказать свою колонку в функции ORDER BY
и я могу использовать функцию LIMIT
но она дает мне только верхнее значение, но мне нужно каждое ограничение верхнего значения.
Итак, мой фиктивный стол здесь:
Col-a col-b
A 1001
B 1000
B 999
C 998
A 997
C 996
A 995
A 994
A 993
A 992
B 991
C 990
мое ожидание (LIMIT 3;)
col_a col_b col_a col_b col_c col_d col_e col_f
A 1001 A 1001 B 1000 C 998
B 1000 A 997 B 999 C 996
B 999 A 995 B 991 C 990
C 998 or
A 997
C 996
A 995
B 991
C 990
Я использовал FIELD()
но, к сожалению, я не мог справиться. Как мы можем заказать этот конкретный вызов.
ORDER BY выполняет порядок заказа всех значений, но мне нужно, чтобы каждое значение было определенным числом. Когда я использую функцию LIMIT
вырезаете только верхние значения. Вопрос: как можно заказать каждое другое значение в "1 колонке"
EDIT: я попробовал
SELECT col_a,col_b FROM my_table
order BY FIELD(col_b, 'A','B','C') limit 100;
Попробуйте это: дайте ранг на основе столбца раздела a и order by column-b desc. Выберите строки, где ранг <= 3 Этот запрос предоставит ожидаемый результат (1), это означает 2 столбца (col_a и col_b)
select [col-a], [col-b]
from
( select [col-a], [col-b], row_number() over(partition by [col-a] order by [col-b] desc) rnk from table2
) tbl
where rnk <= 3
Дает вам то, что вам нужно, хотя в немного другом формате. Пожалуйста, проверьте и сообщите мне, если это сработает для вас
выберите COL-A, MIN (COL-B), свинец (MIN (COL-B), 1) over (порядок MIN (COL-B)), свинец (MIN (COL-B), 2) MIN (COL-B)) из audit.latest_job_instance, где COL-B не является нулевым. GROUP BY COL-A
Вероятнее всего, более эффективный метод, но это, вероятно, приведет вас туда, куда вы хотите пойти:
SELECT group_a.col_a AS col_a
,group_a.col_b AS col_b
,group_b.col_a AS col_c
,group_b.col_b AS col_d
,group_c.col_a AS col_e
,group_c.col_b AS col_f
FROM (SELECT col_a, col_b FROM my_table WHERE col_a = 'A' ORDER BY col_b DESC LIMIT 100) as group_a,
(SELECT col_a, col_b FROM my_table WHERE col_a = 'B' ORDER BY col_b DESC LIMIT 100) as group_b,
(SELECT col_a, col_b FROM my_table WHERE col_a = 'C' ORDER BY col_b DESC LIMIT 100) as group_c