Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 08.10.2023
Сообщений: 15

SQL запрос к PostgreSQL

08.10.2023, 13:36. Показов 597. Ответов 6
Метки sql (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Прошу помочь с SQL запросом к PostgreSQL
Нужно вывести только тех клиентов, которые в периоде 202301 имели подписку DUM и в периоде 202302 поменяли её на RUT, т.е. в примере клиент 222.
Реальный массив больше, подписки ищу по маске LiKE(имеют разные сочетания 5DUNY, RUTJ1 и т.п.), таблицы для понимания задачи.
Заранее признателен за совет к решению!

Дано
region Gorod Client Period Podpiska
01 Piter 111 202301 DUM
02 Moskov 222 202301 DUM
01 Piter 111 202302 DUM
02 Moscow 222 202302 RUT

Нужно
region Gorod Client Period_202301 Period_202302
02 Moscow 222 DUM RUT
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.10.2023, 13:36
Ответы с готовыми решениями:

Сформировать SQL запрос postgreSQL
Написать SQL-запрос, который для каждого работника рассчитает количество документов, по которым были зафиксированы события безопасности, с...

Запрос в postgresql
Добрый день всем. Просьба помочь составить запрос. Есть схема prescat в ней есть представление v_settings в ней есть параметр...

Перевод с MS SQL на PostgreSql
Всем привет! Помогите пожалуйста с переводом кода с MS SQL на PostgreSql, нужно именно с использованием переменных. Код упрощен,...

6
912 / 286 / 57
Регистрация: 01.06.2023
Сообщений: 812
08.10.2023, 14:59
Лучший ответ Сообщение было отмечено Psvt как решение

Решение

Пожалуйста, используйте возможности редактора для форматирования табличных данных

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
SELECT 
  client
FROM
 (
  SELECT
    client,
    1 ok 
  FROM
    PGTABLE
  WHERE 
    Period = 202301 AND Podpiska LIKE "%DUM%"
  
  UNION ALL
  
  SELECT
    client,
    2 ok 
  FROM
    PGTABLE
  WHERE 
    Period = 202302 AND Podpiska LIKE "%RUT%"
 ) t
GROUP BY client
HAVING SUM(DISTINCT ok) = 3
1
0 / 0 / 0
Регистрация: 08.10.2023
Сообщений: 15
08.10.2023, 18:54  [ТС]
Спасибо!

Добавлено через 1 час 35 минут
Работает, Спасибо!
Как можно добавить два столбца справа в первом вернуть подписку на предыдущий период, а во втором на последующий, т.е показать смену с одной на другую?
0
912 / 286 / 57
Регистрация: 01.06.2023
Сообщений: 812
08.10.2023, 23:15
не очень понял что нужно, какая подписка была 202212 ?
0
0 / 0 / 0
Регистрация: 08.10.2023
Сообщений: 15
10.10.2023, 02:13  [ТС]
1) Итогом запроса в этом примере будет выбор одного client, сменившего подписку, - 222, нужно
для него вывести столбцы
region, Gorod, Client, Period_202301(какая была в этот период), Period_202302(какая сейчас)
как в таблице "Нужно" в задаче.

2)
SQL
1
2
3
4
5
6
7
8
FROM (
 
SELECT client, 1 ok FROM PGTABLE WHERE Period = 202301 AND Podpiska LIKE "%DUM%"
     
UNION ALL  
     
SELECT client, 2 ok FROM PGTABLE WHERE Period = 202302 AND Podpiska LIKE "%RUT%"
      ) t
Я правильно понимаю, что в этой части кода мы получаем две результирующие таблицы,
объединяем в одну через UNION ALL и называем её t? Как здесь работает 1 ок, 2 ок и GROUP BY client
HAVING SUM(DISTINCT ok) = 3? Что такое оk?

Заранее признателен за Ваш ответ!
0
912 / 286 / 57
Регистрация: 01.06.2023
Сообщений: 812
10.10.2023, 06:43
Лучший ответ Сообщение было отмечено Psvt как решение

Решение

1)
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SELECT 
  t1.region,
  t1.gorod,
  t1.client,
  t1.Podpiska AS Period_202301,
  t2.Podpiska AS Period_202302
FROM
 (
  SELECT
    * 
  FROM
    PGTABLE
  WHERE 
    Period = 202301 AND Podpiska LIKE "%DUM%"
 ) AS t1 INNER JOIN (
  SELECT
    client,
    2 ok 
  FROM
    PGTABLE
  WHERE 
    Period = 202302 AND Podpiska LIKE "%RUT%"
 ) AS t2 ON t1.client = t2.client
2) ok - это просто имя колонки с признаком наличия подписки. 1 - в первом месяце, 2 - во втором месяце дальше суммируем с группировкой по клиенту. если сумма будет= 3 значит выполнено условие " в периоде 202301 имели подписку DUM и в периоде 202302 поменяли её на RUT".
1
0 / 0 / 0
Регистрация: 08.10.2023
Сообщений: 15
10.10.2023, 17:21  [ТС]
Спасибо Вам!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.10.2023, 17:21
Помогаю со студенческими работами здесь

PostgreSQL Оптимизировать запрос
Код выполняется от 13 минут, выдает 1 800 291 строк, хотелось бы при возможности упростить код запроса. Вроде бы все данные выдает верно....

Запрос в PostgreSQL"
Помогите написать запрос, что бы получить вот такую таблицу. Диагности- Лечебные Оперативные Итого ...

Хранимая процедура. PostgreSQL,SQL
Ребят, у меня есть небольшой вопрос. Как создавать "Хранимую процедуру" в PostgreSQL, посколько не могу что-то разобраться. Есть...

Как перенести БД из MS SQL в PostgreSQL?
Добрый, подскажите плиз как перенести БД из MS SQL в PostgreSQL?

Не получается придумать запрос PostgreSQL
Структура таблицы. CREATE TABLE items( id SERIAL PRIMARY KEY, id_item BIGINT, price DOUBLE PRECISION DEFAULT 0.0, ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru