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

Вниз

Сумма чисел по полю   Найти похожие ветки 

 
andey   (2001-12-11 21:04) [0]

Вопрос может глупый, но я не знаю как подсчитать сумму чисел по определенному полю.


 
TSV   (2001-12-11 21:26) [1]


select sum(field1) from table1

Полный синтаксис такой: SUM([ALL | DISTINCT] expression)

Удачи. Почитай книгу по SQL.


 
Dick   (2001-12-12 00:03) [2]

Вопрос действительно смешной. Почитай про SQL и аггрегатные функции.


 
Dick   (2001-12-12 00:04) [3]

А еще про group by.


 
Vaddya   (2001-12-12 23:20) [4]

Ну а если поля два, то как? Например Name - товар, Price - его цена. Как вывести весь товар и его цену, а внизу в дополнительной записи еще и полную стоимость , т. е. SUM(Price). Я делал "SELECT Name, SUM(Price) FROM Table1 GROUP BY Name", но так выводится то же самое, что и при "SELECT * FROM Table1", только название поля в DBGrid SUM OF Price. Ну так все таки как?


 
Girl   (2001-12-13 03:59) [5]

если выводится то же самое, что и при "SELECT * FROM Table1", значит, у тебя строчки Name все разные. Соответственно и суммировать то тебе нечего. Если будет хотя бы две строки с одинаковым Name, то тогда в том самом поле SUM OF Price будет сумма.


 
Nest   (2001-12-13 10:32) [6]

Делай так!
SELECT name,price FROM pricelist
UNION
SELECT NULL,SUM(price) FROM pricelist


Напиши, помогло ли.


 
TonnyS   (2001-12-13 12:15) [7]

когда надо таблицу, а внизу - итог то 2 варианта:
1. а)Сначала запрос, выдающий таблицу всех товаров с ценами типа
Select * from ... where <условие1>
б) потом в другом Query запрос типа
Select sum(price) AS sum_price from ... where <условие1>
(то же условие, что и в п. а)
после query2.open что-то типа:
label1.caption := query2.fieldbyname("sum_price").AsString;2. пункт а - такой же,
б) var
summa : double;
i1 : integer;
...
Summa := 0;
query1.DisableControls; //чтоб не отображался пробег по DBGrid
query1.First;
i1 := query1.fieldByName("price").index;
while not query1.eof do begin
summa := summa + query1.fields[i1].AsFloat;
query1.next;
end;
query1.First; //возвращаемся вверх
query1.EnableControls;
label1.caption := floattostr(summa);

вроде всё.


 
ilysha   (2001-12-13 17:36) [8]

А можно воспользоваться набором EhLib, там такая функция реализована в самом DBGrid.
Пиши, скину линк
http://gratis97.chat.ru


 
Vaddya   (2001-12-13 20:04) [9]

Nest: в принципе, я тоже думал, что нужно использовать UNION, но по примеру приведенного запроса не вышло, пишет "Invalid use of keyword. Token: NULL". Так что пиши еще, если есть какие идеи.
TonnyS: насчет А - преподаватель сказала, что реально сделать и с одним TQuery. Насчет Б - нужен реляционный способ доступа, а это, как известно, навигационный. Хотя, спасибо за помощь.
Так что прошу содействия.


 
andey   (2001-12-13 22:00) [10]

Спасибо у меня получилось по способу №1 TonnyS !!!



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

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

Наверх





Память: 0.46 MB
Время: 0.003 c
3-52460
ol
2001-12-14 10:33
2002.01.17
SQL: вложенный запрос под MSSQL


4-52691
ZserG
2001-11-18 02:47
2002.01.17
Как вставить инструментальную панель в Explorer?


3-52455
kat
2001-12-14 09:30
2002.01.17
Индексы


3-52517
facquodvis
2001-12-17 10:49
2002.01.17
один запрос - две БД


1-52611
StelZ
2001-12-31 13:59
2002.01.17
Модальная форма





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский