Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.03.17;
Скачать: [xml.tar.bz2];

Вниз

Вопро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 вся ветка

Форум: "Базы";
Текущий архив: 2003.03.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
4-54376
paranoid
2003-01-25 20:40
2003.03.17
EnumResourceNames / CALLBACK?


6-54154
dumb
2003-01-27 09:10
2003.03.17
Быстрый gethostbyaddr


4-54371
Артём К.
2002-12-24 05:05
2003.03.17
Версия Windows


9-53832
Axis_of_Evil
2002-10-16 10:56
2003.03.17
GlScene Trouble


1-54084
Альф
2003-03-05 11:38
2003.03.17
Как вызвать из программы runtime error 201 (Range check error) ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский