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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2010, 13:10   #1
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию Группировка в SQL запросе

доброго времени суток. заранее извиняюсь что вопрос по SQL, все таки в делфи+бд без SQL никуда. суть в следующем:делаю большой запрос получаю данные рег номер,название, сумма годовая. выходят двойники (оно и понятно в году люди могли платить много раз), как мне убрать двойников при этом суммы их сложить. вот картинка http://www.loadpicture.ru/?v=avaava.jpg на ней видно что у фирмы "эколайф" 2 платежа. как сделать чтоб "эколайф" был 1 раз приэтом сумма у него сложилась (сумма будет 172.48)?
удалить 2е записи могу а вот удалить так чтоб сумма сложилась не получается
wm_leviathan вне форума Ответить с цитированием
Старый 03.03.2010, 14:33   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
как мне убрать двойников при этом суммы их сложить
Используйте DISTINCT
Попробуйте написать так:
SELECT DISTINCT .....а дальше сложить попробовать.
DISTINCT - исключает дублирующиеся записи.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 03.03.2010, 14:42   #3
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

чтобы из этого датасета получить в нужном виде данные, пишем следующее
Код:
select
  reg_num2,
  abbr2,
  sum(SumaGod2) amount
from (...)
group by reg_num2, abbr2
З.Ы.: учи СКЛ
soleil@mmc вне форума Ответить с цитированием
Старый 03.03.2010, 14:44   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
З.Ы.: учи СКЛ
Это Вы мне?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 03.03.2010, 14:49   #5
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Используйте DISTINCT
Попробуйте написать так:
SELECT DISTINCT .....а дальше сложить попробовать.
DISTINCT - исключает дублирующиеся записи.
я делал так
Код:
select REG_NUM5,ABBR5,SummaGod5
from tFinal
group by REG_NUM5
having count(REG_NUM5) >=1  
order by ABBR5;
так он уберет двойников но суммы не сложит при этом просто выберет 1 из сумм. SELECT DISTINCT можно про них по подробнее ? япросто не пользовался никогда DISTINCT и незнаю как правильно с ним работать.

tFinal у меня такая

Код:
drop tFinal;
create global temporary table tFinal(

REG_NUM5  char(12),
ABBR5     char(100),
SummaGod5 currency,
SummaPlan5   currency,
SummaFakt5 currency,
proc5 int
);
wm_leviathan вне форума Ответить с цитированием
Старый 03.03.2010, 15:57   #6
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
япросто не пользовался никогда DISTINCT и незнаю как правильно с ним работать.
DISTINCT ставишь сразу после слова SELECT, а дальше пишешь все, что тебе там нужно.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 03.03.2010, 16:22   #7
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Это Вы мне?
и тебе тоже

странно, что это вообще работает
Код:
select REG_NUM5,ABBR5,SummaGod5
from tFinal
group by REG_NUM5
having count(REG_NUM5) >=1  
order by ABBR5
попробуй переделать в такой вариант
Код:
select REG_NUM5, ABBR5, sum(SummaGod5)
from tFinal
group by REG_NUM5, ABBR5
having count(REG_NUM5) >=1  
order by ABBR5
soleil@mmc вне форума Ответить с цитированием
Старый 03.03.2010, 16:51   #8
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

Цитата:
Сообщение от soleil@mmc Посмотреть сообщение
и тебе тоже

странно, что это вообще работает
Код:
select REG_NUM5,ABBR5,SummaGod5
from tFinal
group by REG_NUM5
having count(REG_NUM5) >=1  
order by ABBR5
попробуй переделать в такой вариант
Код:
select REG_NUM5, ABBR5, sum(SummaGod5)
from tFinal
group by REG_NUM5, ABBR5
having count(REG_NUM5) >=1  
order by ABBR5
ржу немогу все сделал все получилось все суммы правильно показывает. думаю скажу всем спс, особенно soleil@mmc считать я начал учиться )
и тут F5 вижу последний пост и ржу. у меня код такой же )
Код:
select  REG_NUM5,ABBR5,sum(SummaGod5),SummaPlan5,SummaFakt5,round(tFinal.SummaFakt5/tFinal.SummaPlan5*100) as proc5
from tFinal
group by REG_NUM5,ABBR5
having count(REG_NUM5) >=1 
order by ABBR5;
всем спс тема закрыта понял как считать при отборе
wm_leviathan вне форума Ответить с цитированием
Старый 09.03.2010, 13:36   #9
eda
Пользователь
 
Регистрация: 14.08.2008
Сообщений: 78
По умолчанию

Добры день. помогите, пожалуйста, с выборкой. Есть след таблица(в прикрепленном файле). Нужно выбрать строки: для каждого отличного col последнее изменение(пример результата во втором прикрепленном файле)
Изображения
Тип файла: jpg запрос.JPG (22.9 Кб, 50 просмотров)
Тип файла: jpg после.JPG (16.0 Кб, 34 просмотров)
eda вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в SQL запросе program123 БД в Delphi 11 06.12.2009 17:12
group by в sql-запросе AntonStal БД в Delphi 3 04.09.2009 08:21
Переменные в запросе SQL Talemir БД в Delphi 2 22.08.2009 21:22
Ошибка в SQL запросе eremin БД в Delphi 2 23.06.2007 07:13
Ошибка в SQL запросе...!? KeyDok БД в Delphi 5 21.06.2007 09:19