Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.09.2016, 14:14   #1
nintiniom
Пользователь
 
Аватар для nintiniom
 
Регистрация: 05.09.2016
Сообщений: 16
По умолчанию Сумма по строкам с одинаковым ID

Суть задачи: в выходной таблице просуммировать данные второго атрибута, если id одинаковые (дублирующие)

на входе:
id quan
qwe 1
wer 2
wer 5
ert 3
wer 2

на выходе необходимо:
id quan
qwe 1
wer 9
ert 3

подскажите новичку, пожалуйста, что делаю не так?

select id,
case id
when (count(id)>=1) then sum(quan)
else quan
end id
from таблица
group by id;

Последний раз редактировалось nintiniom; 05.09.2016 в 14:50.
nintiniom вне форума Ответить с цитированием
Старый 05.09.2016, 14:27   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

select id,sun(quan) from table group by id;

вроде как-то так.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.09.2016, 14:36   #3
nintiniom
Пользователь
 
Аватар для nintiniom
 
Регистрация: 05.09.2016
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
select id,sun(quan) from table group by id;

вроде как-то так.
нет же( это абсолютно другое
nintiniom вне форума Ответить с цитированием
Старый 05.09.2016, 14:48   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от nintiniom Посмотреть сообщение
нет же( это абсолютно другое
да нет же, это то, что Вам нужно.

только опечатка sun -> sum()

Код:
select id,sum(quan) 
from table 
group by id;

p.s. а вообще, ID - от слова identifier (идентификатор) - это обычно уникальное ключевое поле. Если ID повторяется, то это уже не ID совсем...

Последний раз редактировалось Serge_Bliznykov; 05.09.2016 в 14:51.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.09.2016, 15:03   #5
nintiniom
Пользователь
 
Аватар для nintiniom
 
Регистрация: 05.09.2016
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
да нет же, это то, что Вам нужно.

только опечатка sun -> sum()

Код:
select id,sum(quan) 
from table 
group by id;

p.s. а вообще, ID - от слова identifier (идентификатор) - это обычно уникальное ключевое поле. Если ID повторяется, то это уже не ID совсем...

да нет же, понятно что это sum)

p.s. таблица упрощена - id это один из ключей. есть еще атрибуты которые в процессе убираю (id - это код товара, который есть в наличии, а quan - количество оставшегося товара; id повторяются, потому что был еще ключ.столбец - партия. То есть один и тот же товар, но с разным номером партии)
а в итоге вне зависимости от того в какой партии товар пришел необходимо посчитать общее количество каждого id товара ...

Последний раз редактировалось nintiniom; 05.09.2016 в 15:06.
nintiniom вне форума Ответить с цитированием
Старый 05.09.2016, 15:08   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так покажи не упрощенный вариант. А ответ дали совершенно определенный для того, что спрашивалось
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 05.09.2016, 15:18   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
а в итоге вне зависимости от того в какой партии товар пришел необходимо посчитать общее количество каждого id товара ...
в итоге запрос

select id,sum(quan) from table group by id;

и подсчитает количество товара по каждому id (вне зависимости от партии)

Вы запрос проверяли вообще?
Он сработал? Что-то не так?
Что конкретно?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.09.2016, 15:33   #8
nintiniom
Пользователь
 
Аватар для nintiniom
 
Регистрация: 05.09.2016
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Вы запрос проверяли вообще?
разумеется и до этого тоже

Цитата:
Он сработал? Что-то не так?
сработал, но выдал неверное количество

Цитата:
Что конкретно?
вместе нужного количества 1 выдает 3 и так по всем строкам увеличенное число(

выбираю через максимальное значение - только в тех строках где есть несколько партий естественно выдает максимальное значение

SELECT FLBCFS1, max(FLTRQT)
FROM PRODDTA.F55L12IB
INNER JOIN PRODDTA.F554106 on RPITM = FLITM and RPY55AP = 'Y' and RPY55CR = 'Y'
INNER JOIN PRODDTA.f4101 on IMITM = FLITM and IMPRP9 = '200' and FLTRQT > 0 AND FLDGL = 116246
GROUP BY FLBCFS1
nintiniom вне форума Ответить с цитированием
Старый 05.09.2016, 15:43   #9
nintiniom
Пользователь
 
Аватар для nintiniom
 
Регистрация: 05.09.2016
Сообщений: 16
По умолчанию

из-за join-a он троит данные - просто добавила
sum(FLBCFS1)/3
и то что надо выдает

спасибо всем!!!
nintiniom вне форума Ответить с цитированием
Старый 05.09.2016, 15:44   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

для этого существуют именные JOIN-ы, чтоб было однозначно видно, откуда что берется.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать коментарии к двум строкам строкам в программе на VBA Yurec2407 Помощь студентам 2 30.01.2015 12:54
Много ComboBox-ов с одинаковым диапазоном Tigranik Microsoft Office Excel 2 30.01.2013 17:10
написать программу которая вводит по строкам с квеатуры двумерные массивы и вычисляет сумму его элементов по строкам таня99 Паскаль, Turbo Pascal, PascalABC.NET 3 23.05.2012 20:23
Одинаковым данным-одинаковый номер! Любопытная Microsoft Office Excel 16 03.08.2011 10:16
Двухмерный массив данных - поиск максимального, сумма по строкам (используя StringGrid в Delphi) Ленуся)) Помощь студентам 1 21.06.2011 13:21