Вниз
Скачать: CL | DM;

Вопроc по SQL   Найти похожие ветки 

← →
phantom2040 ©   (2003-02-25 16:26) [0]

Привет Мастера!!!
Интересует такой вопрос, есть таблица по передаче факсов, поля следующие 1 - "категория" - в нем информация типе передаваемого сообщения к примеру: служебный, население и т.д. , 2-"Тип вызова" - в нем информация о типе вызова: Междугородний, международный, 3 - "Количество листов" - в нем сколько листов передано, 4 - "Всего" - соответственно сумма уплаченная за передачу. Задача такая нужно рассортировать по категориям по первому полю, каждую категорию рассортировать по типу вызова, просчитать количество услуг в каждой категории, просуммировать количество листов, и просумировать поле всего для каждой категории.
Вопрос можно ли такое сделать средствами языка SQL, в принципе задача решена с помошью циклов и массивов, но интересно можно ли более рационально решить все это дело, так сказать одной строкой, я уже второй раз сталкиваюсь с такой задачей и все время приходится извращаться при помощи массивов и циклов????


← →
Соловьев ©   (2003-02-25 16:29) [1]

group by и count тебе помогут


← →
Johnmen ©   (2003-02-25 16:33) [2]

SELECT "категория", "Тип вызова", COUNT(*), SUM("Количество листов"), SUM("Всего")
FROM Table
GROUP BY "категория", "Тип вызова"


← →
phantom2040 ©   (2003-02-26 08:57) [3]

Хотелось бы конечно заметить, что после построения запрсоса по указанному шаблону, DBD выдал следующее:
When GROUP BY exists, every simple field in projectors must be in GROUP BY
На сколько я понял из выше сказаенного, для группировки нужно одно поле, по нескольким полям групирровка не возможна.
Так как же быть????


← →
Johnmen ©   (2003-02-26 09:20) [4]

Понял неправильно ! Группировать можно по сколько угодным полям, лишь бы все простые поля (не входящие в агрегирование) были перечислены в GROUP BY.


← →
phantom2040 ©   (2003-02-26 09:29) [5]

(не входящие в агрегирование)
Это как понять???


← →
Соловьев ©   (2003-02-26 09:36) [6]


> COUNT(*), SUM("Количество листов"), SUM("Всего")



← →
Johnmen ©   (2003-02-26 09:40) [7]

Вообще-то для понимания читают книжки...:)))

SELECT F1, F2, COUNT(*), SUM(F3), MAX(F4)
здесь F1, F2 - простые поля (в смысле поля запроса !),
а поля COUNT(*), SUM(F3), MAX(F4) - поля агрегированные, т.е. представляющие собой агрегатные ф-ии.




← →
phantom2040 ©   (2003-02-26 10:03) [8]

Спасибо вроде получилось


← →
Stranger ©   (2003-02-27 09:40) [9]

Для сортировки можно использовать в запросе раздел
Order By



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.013 c
1-54017
axs
2003-03-06 18:44
2003.03.17
А это что за глюк???


14-54260
sancho
2003-02-28 12:42
2003.03.17
Полна чудес могучая природа (с) Не помню чья.


14-54243
Masa
2003-02-28 11:42
2003.03.17
Подскажите, как прикрыть аську с помощью WinRoute ?


1-54051
Andrew H.
2003-03-05 09:28
2003.03.17
Копирование из буфера в Excel2000


7-54334
Qwerty622
2003-01-20 14:46
2003.03.17
Загрузка Win95 ???




   Наверх