Distinct и SUM

Aleks-r
Дата: 14.11.2008 16:03:59
Господа и товарищи!
Просьба не бить тапками.
Имеем таблицу:

ACC ID_NUM Name LIM CITY
________________________________________________
222 5102 Бабайкин 12 Москва
34 5100 Попов 1488 Воронеж
22 5102 Бабайкин 12558 Мюнхен
484 5801 Рубашкин 55 Лондон
1822 5508 Иванопуло 874 Тула
2722 5508 Иванопуло 7 Капчегай

15 5102 Бабайкин 28 Гродно


Надо выбирать ID_NUM без повторов. Если поле (ID_NUM) неоднократно встречалось, то суммируем для него поле (LIM).
Получаем:

ACC ID_NUM Name LIM CITY
_________________________________________________
222 5102 Бабайкин 12598 Москва
34 5100 Попов 1488 Воронеж
484 5801 Рубашкин 55 Лондон
1822 5508 Иванопуло 881 Тула
Andrey.L
Дата: 14.11.2008 16:08:12
Aleks-r
Господа и товарищи!
Просьба не бить тапками.
Имеем таблицу:

ACC ID_NUM Name LIM CITY
________________________________________________
222 5102 Бабайкин 12 Москва
34 5100 Попов 1488 Воронеж
22 5102 Бабайкин 12558 Мюнхен
484 5801 Рубашкин 55 Лондон
1822 5508 Иванопуло 874 Тула
2722 5508 Иванопуло 7 Капчегай

15 5102 Бабайкин 28 Гродно


Надо выбирать ID_NUM без повторов. Если поле (ID_NUM) неоднократно встречалось, то суммируем для него поле (LIM).
Получаем:

ACC ID_NUM Name LIM CITY
_________________________________________________
222 5102 Бабайкин 12598 Москва
34 5100 Попов 1488 Воронеж
484 5801 Рубашкин 55 Лондон
1822 5508 Иванопуло 881 Тула
ACC, ID_NUM, CITY какой брать?
SELECT MIN(ACC) ACC, MIN(ID_NUM) ID_NUM, Name, SUM(LIM) LIM, MIN(CITY) CITY
  FROM table_name
  GROUP BY Name
Aleks-r
Дата: 14.11.2008 16:18:15
Andrey.L,
Уникальность по полю ID_NUM, остальные поля выводятся как есть, за исключением суммы.
Wadim S
Дата: 14.11.2008 16:20:20
Aleks-r
Andrey.L,
Уникальность по полю ID_NUM, остальные поля выводятся как есть, за исключением суммы.

Что значит как есть?
В Вашем примере:
ACC ID_NUM
_______________
1822 5508
2722 5508

Какое значение из двух возможных ACC нужно выводить для данного ID_NUM ?
Andrey.L
Дата: 14.11.2008 16:21:24
Aleks-r
Andrey.L,
Уникальность по полю ID_NUM, остальные поля выводятся как есть, за исключением суммы.

Как есть не получится.
Или по данному полю идет группировка или его нужно "завернуть" в агрегатную функцию.
Поправлю запрос:
SELECT MIN(ACC) ACC, ID_NUM, Name, SUM(LIM) LIM, MIN(CITY) CITY
  FROM table_name
  GROUP BY ID_NUM, Name
samatom
Дата: 14.11.2008 16:25:58
Скорее всего имелось в виду

SELECT t1.ACC, t1.ID_NUM, t1.Name, (SELECT SUM(LIM) FROM table_name t2 WHERE t1.ID_NUM = t2.ID_NUM) LIM, t1.CITY
  FROM table_name t1
Aleks-r
Дата: 14.11.2008 16:27:18
Andrey.L,
Большое спасибо.
Насколько я понимаю выглядеть должно так:

SELECT MIN(ACC) ACC, ID_NUM, MIN(Name) Name, SUM(LIM) LIM, MIN(CITY) CITY
FROM table_name
GROUP BY ID_NUM
Andrey.L
Дата: 14.11.2008 16:30:31
Aleks-r
Andrey.L,
Большое спасибо.
Насколько я понимаю выглядеть должно так:

SELECT MIN(ACC) ACC, ID_NUM, MIN(Name) Name, SUM(LIM) LIM, MIN(CITY) CITY
FROM table_name
GROUP BY ID_NUM
Если для одного и того же ID_NUM колонка Name одна и та же, лучше добавь в группировку (см. мой пост выше).
Aleks-r
Дата: 14.11.2008 16:47:57
Andrey.L,
Еще раз Огромное спасибо.
Как выяснилось опытным путем поле Name может отличаться для одного и того же ID_Num (хотя не должно,но это уже отдельная песня).
Т.ч. оставляем как есть.

Еще раз Огромное спасибо.