|
как выбрать по одной записи для каждой группы из таблицы
|
|||
---|---|---|---|
#18+
написала запрос для выборки данных (результат выполнения на скриншоте) что необходимо добавить в запрос, чтобы вывести максимальный revenue для каждого из двух адресов? по идее это будут две верхние строчки, но выражение limit(2) не подходит, т.к. мы не знаем изначально, это для разных магазинов или одного. если я правильно понимаю, выражение distinct on(a2.address) также не подходит, ибо не факт, что выведет максимальные revenue для магазинов SELECT a2.address, s.first_name, s.last_name, sum(p.amount) AS revenue FROM staff s JOIN store s2 ON s.store_id=s2.store_id JOIN payment p ON s.staff_id=p.staff_id JOIN address a2 ON s2.address_id=a2.address_id WHERE EXTRACT (YEAR FROM p.payment_date)=2017 GROUP BY s.first_name, s.last_name, a2.address ORDER BY revenue DESC; ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 18:34 |
|
как выбрать по одной записи для каждой группы из таблицы
|
|||
---|---|---|---|
#18+
mariem, row_number для группы, затем отфильтровать row_number = 1. решение в лоб, с точки производительности плохо, так как нужно считать все данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 12:45 |
|
как выбрать по одной записи для каждой группы из таблицы
|
|||
---|---|---|---|
#18+
mariem написала запрос для выборки данных (результат выполнения на скриншоте) что необходимо добавить в запрос, чтобы вывести максимальный revenue для каждого из двух адресов? по идее это будут две верхние строчки, но выражение limit(2) не подходит, т.к. мы не знаем изначально, это для разных магазинов или одного. если я правильно понимаю, выражение distinct on(a2.address) также не подходит, ибо не факт, что выведет максимальные revenue для магазинов SELECT a2.address, s.first_name, s.last_name, sum(p.amount) AS revenue FROM staff s JOIN store s2 ON s.store_id=s2.store_id JOIN payment p ON s.staff_id=p.staff_id JOIN address a2 ON s2.address_id=a2.address_id WHERE EXTRACT (YEAR FROM p.payment_date)=2017 GROUP BY s.first_name, s.last_name, a2.address ORDER BY revenue DESC; именно distinct on (a2.address) вам и нужен... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
https://www.postgresql.org/docs/12/sql-select.html#SQL-DISTINCT -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 15:04 |
|
|
start [/forum/topic.php?fid=53&fpage=17&tid=1994245]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
16ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 360ms |
total: | 507ms |
0 / 0 |