Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помощь в SQL запросе 
:(
    Опции темы
derilshows
Дата 23.3.2016, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 22.3.2016

Репутация: нет
Всего: нет



Всем привет! Очень нужен Ваш совет.

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

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


Что я хочу:

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

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



Очень прошу помочь, совсем не представляю как это сделать. 
PM MAIL   Вверх
Akina
Дата 23.3.2016, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 3
Всего: 453



Совершенно невменяемое описание.

Показывайте:
  • Структуру хранения исходных данных с пояснением, в каком поле что хранится
  • Пример исходных данных в описанной выше структуре
  • Желаемый результат на показанных данных с объяснением, почему именно так



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
derilshows
Дата 23.3.2016, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 22.3.2016

Репутация: нет
Всего: нет



Цитата(Akina @  23.3.2016,  08:59 Найти цитируемый пост)
Показывайте:

Я спрашивался с одной задачей(теперь в третьей колонке значения отображаются как их первые две цифры).

Структура такова:
Числовое значение, месяц, код
Number, Month, Code

Например. При запросе был такой вывод:
200 02 04-03
30 02 04-04
10 03 04-05

Теперь(третья колонка изменилась).
200 02 04
30 02 04
10 03 04

Но результат должен выглядеть так:
230 02 04
10 03 04

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

(Показано в примере, было 200 и 30 в двух строчках, но их месяцы оказались одинаковы, и коды в третьей колонке после преобразования, тоже, поэтому они стали одной единой строкой, где в числовые значения из первой коллонки суммировались). 

Надеюсь, корректно описал суть проблемы. 

Собственно, SQL код на данный момент:
Код

SELECT NUMBER, MONTH, COUNT(*), split_part(code, '-', 1)
  FROM tab
 GROUP BY MONTH, split_part(code, '-', 1)

PM MAIL   Вверх
Akina
Дата 24.3.2016, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 3
Всего: 453



Цитата(derilshows @  23.3.2016,  22:58 Найти цитируемый пост)
Структура такова

Структуру принято давать в формате CREATE TABLE. Сейчас не видно, например, типов полей...
Аналогично - исходные данные принято давать в формате INSERT .. SELECT либо INSERT .. VALUES.

Цитата(derilshows @  23.3.2016,  22:58 Найти цитируемый пост)

Number Month Code
200    02    04-03
 30    02    04-04
 10    03    04-05


Цитата(derilshows @  23.3.2016,  22:58 Найти цитируемый пост)
результат должен выглядеть так:
Number Month Code
230    02    04
 10    03    04

При таких исходных данных и описанной логике получения результата запрос будет таким:
Код

SELECT SUM(Number) AS Number, Month, SPLIT_PART(Code, '-', 1) AS Code
FROM tab
GROUP BY Month, SPLIT_PART(Code, '-', 1)



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PostgreSQL | Следующая тема »


 




[ Время генерации скрипта: 0.1296 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.