GOOGLE ADS

среда, 11 мая 2022 г.

Что было бы эквивалентом этого T-SQL в Postgres

Я хочу запустить это либо в интерактивном режиме из psql, либо из кода.

create proc recent_orders_by_region
as
select top(3) * from view_orders where region = 'NA' order by order_date desc
select top(3) * from view_orders where region = 'WE' order by order_date desc
select top(3) * from view_orders where region = 'EE' order by order_date desc

Решение проблемы

Вы можете использовать rank() over (), но помните, что порядок должен быть уникальным, иначе RANK присвоит один и тот же номер нескольким строкам в группе.

Запрос с примерами данных


SELECT a.* FROM (
SELECT *,
rank() OVER (
PARTITION BY region
ORDER BY order_date DESC,ident DESC
)
FROM (
values
(1, current_date, 'NA'),(2, current_date-1, 'NA'),
(3, current_date-1, 'NA'),(4, current_date-4, 'NA'),
(5, current_date, 'NA1'),(6, current_date-1, 'NA1'),
(7, current_date-1, 'NA1'),(8, current_date-4, 'NA1')
) view_orders (ident, order_date, region)
) a WHERE RANK <=3

identпредназначен только для демонстрационных целей и должен быть заменен реальным столбцом из view_ordersтаблицы

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...