Как составить SQL запрос?

Помогите доделать SQL-запрос, в силу малой просветленности не могу доделать сам.
Есть такой запрос:
SELECT id, id_sys, n, n_a, source from photos where id in ({_ids_string});

Что в него нужно дописать, что бы была сортировка, в начале были те записи у которых одинаковое поле n_a. И чем больше записей с одинаковым этим полем, тем они ближе к началу.
Надеюсь на Вашу помощь
  • Вопрос задан
  • 677 просмотров
Решения вопроса 1
@Vitsliputsli
что-то вроде этого:
WITH ord AS (
    SELECT n_a, count(*) cn FROM photos WHERE id in ({_ids_string}) GROUP BY n_a 
)
SELECT id, id_sys, n, photos.n_a, source 
    FROM photos 
    JOIN ord ON photos.n_a=ord.n_a
    WHERE id in ({_ids_string})
    ORDER BY cn DESC
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@artem78
Смотрите GROUP BY и ORDER BY.

Например, такая таблица:
+----+-------+
| id | value |
+----+-------+
|  1 | alpha |
|  2 | delta |
|  3 | beta  |
|  4 | gamma |
|  5 | beta  |
|  6 | beta  |
|  7 | alpha |
|  8 | beta  |
+----+-------+


SQL:
SELECT `value` , COUNT( * ) AS `cnt`
FROM `testtable2`
GROUP BY `value`
ORDER BY `cnt` DESC


Результат:
+-------+-----+
| value | cnt |
+-------+-----+
| beta  |   4 |
| alpha |   2 |
| delta |   1 |
| gamma |   1 |
+-------+-----+


Сделайте у себя сами по аналогии.
Ответ написан
@danSamara
Это классический случай использования оконных функций: https://postgrespro.ru/docs/postgresql/11/tutorial...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы