![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопроc по SQL [D7, Paradox]
phantom2040 © (2003-02-25 16:26:00)Привет Мастера!!!
Интересует такой вопрос, есть таблица по передаче факсов, поля следующие 1 - "категория" - в нем информация типе передаваемого сообщения к примеру: служебный, население и т.д. , 2-"Тип вызова" - в нем информация о типе вызова: Междугородний, международный, 3 - "Количество листов" - в нем сколько листов передано, 4 - "Всего" - соответственно сумма уплаченная за передачу. Задача такая нужно рассортировать по категориям по первому полю, каждую категорию рассортировать по типу вызова, просчитать количество услуг в каждой категории, просуммировать количество листов, и просумировать поле всего для каждой категории.
Вопрос можно ли такое сделать средствами языка SQL, в принципе задача решена с помошью циклов и массивов, но интересно можно ли более рационально решить все это дело, так сказать одной строкой, я уже второй раз сталкиваюсь с такой задачей и все время приходится извращаться при помощи массивов и циклов????
Stranger (2003-02-27 09:40:00) [1]Для сортировки можно использовать в запросе раздел
Order By
phantom2040 (2003-02-26 10:03:00) [2]Спасибо вроде получилось
Johnmen (2003-02-26 09:40:00) [3]Вообще-то для понимания читают книжки...:)))
SELECT F1, F2, COUNT(*), SUM(F3), MAX(F4)
здесь F1, F2 - простые поля (в смысле поля запроса!),
а поля COUNT(*), SUM(F3), MAX(F4) - поля агрегированные, т.е. представляющие собой агрегатные ф-ии.
Соловьев (2003-02-26 09:36:00) [4]
> COUNT(*), SUM("Количество листов"), SUM("Всего")
phantom2040 (2003-02-26 09:29:00) [5](не входящие в агрегирование)
Это как понять???
Johnmen (2003-02-26 09:20:00) [6]Понял неправильно ! Группировать можно по сколько угодным полям, лишь бы все простые поля (не входящие в агрегирование) были перечислены в GROUP BY.
phantom2040 (2003-02-26 08:57:00) [7]Хотелось бы конечно заметить, что после построения запрсоса по указанному шаблону, DBD выдал следующее:
When GROUP BY exists, every simple field in projectors must be in GROUP BY
На сколько я понял из выше сказаенного, для группировки нужно одно поле, по нескольким полям групирровка не возможна.
Так как же быть????
Johnmen (2003-02-25 16:33:00) [8]SELECT "категория", "Тип вызова", COUNT(*), SUM("Количество листов"), SUM("Всего")
FROM Table
GROUP BY "категория", "Тип вызова"
Соловьев (2003-02-25 16:29:00) [9]group by и count тебе помогут