powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Склейка полей, в которых одинаковые первые 2 цифры, с разделом на месяца
7 сообщений из 7, страница 1 из 1
Склейка полей, в которых одинаковые первые 2 цифры, с разделом на месяца
    #39198307
derilshows
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

Имеется таблица, где в одном поле данные хранятся в виде: 02, 02-09, 02-10, 04, 04-02, 05, 05-06.
Каждым значениям соответствует свой месяц.

У меня такие вопросы:
1)Как сделать обьединение строк, в которых первые две цифры одинаковы, в одну?
2)Если за февраль записано 10-04, а за январь 10-05, то склеится это все в одну строчку или будет склейка с разделом на месяца? Если нет, то как этого добиться? Что бы данные склеивались только по месяцу.
...
Рейтинг: 0 / 0
Склейка полей, в которых одинаковые первые 2 цифры, с разделом на месяца
    #39198441
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
derilshows,

после склейки какой вид должен быть у поля с данными 02, 02-09, 02-10, 04, 04-02, 05, 05-06 ?
в частности, склеим три строки: 02, 02-09, 02-10. Что на выходе будет у этого поля? какое вид должен быть у остальных полей?
надеюсь, вы же понимаете, что склейка приведет к уменьшению числа строк, соответственно, с данными других полей тоже придется что-то делать.

что касается разделения на месяцы, то тут все зависит от того, как реализуете "склейку". можно сделать с учетом месяца и тогда данные за разный месяц будут обрабатываться отдельно. можно сделать общей кучей, тогда данные обработаются без учета месяца.
...
Рейтинг: 0 / 0
Склейка полей, в которых одинаковые первые 2 цифры, с разделом на месяца
    #39198443
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
derilshows,

а чтобы людям было приятнее вам отвечать - приведите юзабильный набор репрезентативных тестовых данных и желаемый вид результата на них с описанием логики получения итоговой выборки.
...
Рейтинг: 0 / 0
Склейка полей, в которых одинаковые первые 2 цифры, с разделом на месяца
    #39198650
derilshows
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Щукина Анна,

Есть БД, где в одной колонке записаны коды в виде: 10, 10-09, 10-10, 10-11, 15, 15-02, 15-03 и тд. Каждому значению соответсвтует месяц(в числовом формате). Я делаю SQL запрос, в котором выводится какие коды в каком месяце, с подсчетом сколько раз были вызваны. Запрос отображается в QTableView.
Выходит формат:
СКОЛЬКО РАЗ БЫЛ ВЫЗВАН, В КАКОМ МЕСЯЦЕ, КАКОЙ КОД .
quantity, month, code

Например, будет вывод:

125, 04, 10-09
4, 04, 10-10
93, 05, 15-02
43, 05, 15-03


Что я хочу:

Все коды, которые начинаются на две одинаковые цифры, должны обьединиться в одну строку, и уже отображаться только этими первыми двумя цифрами. Но нужно сохранить сортировку по месяцам, дабы коды из разных месяцев не склеивались. Естественно, первая коллонка(сколько раз был вызван) при обьединении должна суммировать соответственные значения строк, что склеиваются.

В итоге, должно выйти так:
129, 04, 10
136, 05, 15



Можно ли решить этот вопрос чисто SQL? Или нужно использовать QT модель?
Очень прошу помочь, совсем не представляю как это сделать.
...
Рейтинг: 0 / 0
Склейка полей, в которых одинаковые первые 2 цифры, с разделом на месяца
    #39198685
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
derilshows,

Код: sql
1.
2.
3.
SELECT sum(quantity), month, split_part(code, '-', 1)
  FROM tab
 GROUP BY month, split_part(code, '-', 1);


?
...
Рейтинг: 0 / 0
Склейка полей, в которых одинаковые первые 2 цифры, с разделом на месяца
    #39199041
derilshows
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vyegorov, sum(quantity) не получается, так как количество я получаю благодаря count().

Теперь оно просто создает новый столбец, в котором показаны только первые 2 цифры.
Но если был вывод:
04-02
04-03
04-05
04-06

То теперь он такой:
04
04
04
04

Как убрать дубликаты? Пробовал Distinct split_part(code, '-', 1), ошибка, не получается.
...
Рейтинг: 0 / 0
Склейка полей, в которых одинаковые первые 2 цифры, с разделом на месяца
    #39199364
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
derilshows,

не должно быть дубликатов если у вас group by по month, split_part(code, '-', 1). т.е. они с разными месяцами будут, что и требовалось.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Склейка полей, в которых одинаковые первые 2 цифры, с разделом на месяца
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]