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

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

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

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

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

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

Есть БД, где в одной колонке записаны коды в виде: 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
23.03.2016, 12:13
    #39198685
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Склейка полей, в которых одинаковые первые 2 цифры, с разделом на месяца
derilshows,

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


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

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

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

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

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


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