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

Вниз

Вопрос по SELECT   Найти похожие ветки 

 
Юлия   (2003-09-03 09:46) [0]

Уважаемые мастера, подскажите, пожалуйста!
Есть запрос:
SELECT a.nazv,a.kol from a
Результат:
Ботинки 5
Рубашки 6
Пуговицы 3
Ботинки 3

Как сгруппировать, чтобы было:
Ботинки 8
Рубашки 6
Пуговицы 3


 
stone   (2003-09-03 09:47) [1]

SELECT a.nazv,sum(a.kol) from a group by a.nazv


 
Юлия   (2003-09-03 09:52) [2]

а чтобы количество суммировалось?


 
Ann   (2003-09-03 09:59) [3]


> [2] Юлия (03.09.03 09:52)
> а чтобы количество суммировалось?

а разве

> [1] stone © (03.09.03 09:47)
> SELECT a.nazv,sum(a.kol) from a group by a.nazv

не суммируется?


 
Sergey13   (2003-09-03 10:05) [4]

2Ann © (03.09.03 09:59) [3]
>а разве не суммируется?
Ну так это же пробовать надо, смотреть. 8-)


 
Ann   (2003-09-03 10:11) [5]


> Sergey13 © (03.09.03 10:05)

ну да :))


 
Sergey13   (2003-09-03 10:26) [6]

2Юлия (03.09.03 09:46)
А у вас в таблице так и есть
Ботинки 5
Рубашки 6
Пуговицы 3
Ботинки 3
Или это "упрощение для примера"? Если так то как вы будете отличать/суммировать Ботинки и Туфли мужские например?


 
Юлия   (2003-09-03 10:34) [7]

Когда пишу Group, вылезает ошибка:
When GROUP BY exist, every simple field in projectors must be in GROUP BY
Что это значит? Нужно в GROUP указывать ВСЕ поля?

Sergey: Да, это "Упрощение"


 
MadDogNT   (2003-09-03 10:39) [8]

Абсолютно верно.
В GROUP нужно указывать все поля


 
MadDogNT   (2003-09-03 10:39) [9]

Абсолютно верно.
В GROUP нужно указывать все поля


 
stone   (2003-09-03 10:39) [10]


> Юлия (03.09.03 10:34) [7]


Ты бы полностью запрос показала. Тут телепатов нет.


 
Юлия   (2003-09-03 10:50) [11]

Если указать все поля, не группируется, поскольку в первой и в последней записи разное значение поля sum. Выдаются все записи. Что делать?


 
MadDogNT   (2003-09-03 10:54) [12]

Покажи запрос полностью


 
Юлия   (2003-09-03 10:57) [13]

Query1.SQL.Add("SELECT prodaj.nom_prep,prodaj.OP_dol from prodaj");
query1.SQL.Add(" group by prodaj.nom_prep, prodaj.OP_dol");


 
MadDogNT   (2003-09-03 11:05) [14]

Query1.SQL.Add("SELECT prodaj.nom_prep,sum(prodaj.OP_dol) from prodaj");
query1.SQL.Add(" group by prodaj.nom_prep");


 
Юлия   (2003-09-03 11:25) [15]

Спасибо большое!

А еще вопрос: Как сделать, чтобы вычислялась доля по полю?
То есть
Ботинки 8/17
Рубашки 6/17
Пуговицы 3/17


 
stone   (2003-09-03 11:27) [16]

Query1.SQL.Add("SELECT prodaj.nom_prep,sum(prodaj.OP_dol)/17 from prodaj");
query1.SQL.Add(" group by prodaj.nom_prep");


 
Юлия   (2003-09-03 11:34) [17]

Нет, имеется вв виду, что 17 - это сумма по столбцу (8+6+3)


 
stone   (2003-09-03 11:45) [18]

SELECT prodaj.nom_prep, sum(prodaj.OP_dol)/(select sum(prodaj.OP_dol) from prodaj) from prodaj group by prodaj.nom_prep

а вообще при составлении вопроса неплохо бы указать СУБД и компоненты доступа к данным, так как при этом есть масса способов уиличения быстродействия системы за счет ряда методов.


 
MadDogNT   (2003-09-03 11:45) [19]

Надо делать подчиненный запрос


 
MadDogNT   (2003-09-03 11:47) [20]

Как всегда кто-то меня опередит!
На этот раз это был Stone:))


 
MsGuns   (2003-09-03 11:48) [21]

Вместто "17" надо встроенный Select SUM(prodaj.OP_dol from prodaj


 
Sergey13   (2003-09-03 11:56) [22]

2MsGuns © (03.09.03 11:48) [21]
>Вместто "17" надо встроенный Select SUM(prodaj.OP_dol from prodaj

Только желательно отработать его предварительно и записать результат в переменную, а в запросе делить на нее, иначе наверное (надо проверять) подзапрос будет отрабатываться для каждой строки - запаришься ждать.


 
Юлия   (2003-09-03 12:05) [23]

Спасибо, но...
если так:

SELECT prodaj.nom_prep, sum(prodaj.OP_dol)/(select sum(prodaj.OP_dol) from prodaj) from prodaj group by prodaj.nom_prep
query1.SQL.Add(" where nom_prep>10");
query1.SQL.Add(" group by prodaj.nom_prep");
Где поля nom_prep:
Ботинки 15
Рубашки 1
Пуговицы 2

В результате выдает:
Рубашки 8/17
Пуговицы 3/17

А нужно:
Рубашки 8/11
Пуговицы 3/11

Такое возможно?

База: paradox


 
Sandman25   (2003-09-03 12:09) [24]

Добавьте where nom_prep > 10 во вложенный select (тот, который знаменатель считает).


 
Mike Kouzmine   (2003-09-03 12:11) [25]

поставь условие на (select sum(prodaj.OP_dol) from prodaj)


 
stone   (2003-09-03 12:12) [26]

2 Юлия (03.09.03 12:05) [23]

Возможно и так, и еще как угодно, достаточно хотя бы на секундочку задуматься над тем что Вы пишите. Нередко помогает чтение книг.


 
Юлия   (2003-09-03 12:12) [27]

А если запрос выполнен, как получить сумму по столбцу?


 
MsGuns   (2003-09-03 12:13) [28]

Откуда взялось 11 ? Есть какой-то признак, отделяющий рубашки с пуговицами от ботинок ? Типа групп товаров ? Если есть, то в подзапросе нужна связка через это поле в операторе where

Юлечка, а самой поэкспериментировать не судьба ? Так и будем после каждого чиха за таблеткой в форум бегать ?


 
Sandman25   (2003-09-03 12:14) [29]

Юлия, прочитайте [26] stone © (03.09.03 12:12)


 
Юлия   (2003-09-03 12:19) [30]

Я книжку по дельфи на ночь читаю. Без шуток.
Я действительно запуталась.


 
MsGuns   (2003-09-03 12:19) [31]

>Юлия (03.09.03 12:12) [27]
>А если запрос выполнен, как получить сумму по столбцу?

Составить второй запрос с условиями выборки=основному, но с суммированием и выполнить его.


 
Юлия   (2003-09-03 12:26) [32]

Sandman25: просто хотела узнать, как это сделать ГРАМОТНО!
Перебрать записи и заняться арифметикой могу и сама.


 
Anatoly Podgoretsky   (2003-09-03 12:32) [33]

Юлия (03.09.03 12:19) [30]
Не по Дельфи надо читать, а возьми Грабера - введение в SQL


 
Anatoly Podgoretsky   (2003-09-03 12:32) [34]

Юлия (03.09.03 12:19) [30]
Не по Дельфи надо читать, а возьми Грабера - введение в SQL


 
Sandman25   (2003-09-03 12:54) [35]

[32] Юлия (03.09.03 12:26)

Не надо арифметикой заниматься. Надо взять книгу по SQL, как Anatoly Podgoretsky советует.



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

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

Наверх





Память: 0.51 MB
Время: 0.012 c
1-82314
AndB
2003-09-12 05:51
2003.09.25
uses Windows, Forms, Menus, ... частично?


1-82260
Layner
2003-09-15 08:26
2003.09.25
Знатоки, помогите с компонентом. Пишу в первый раз, пример с Edit


14-82501
Rouse_
2003-08-31 04:46
2003.09.25
Перепись (Уже нормальная)


7-82521
Шустрый
2003-07-13 21:00
2003.09.25
Открытие и закрытие окон


4-82533
miwa
2003-07-25 11:56
2003.09.25
Как можно (если можно) использовать вывод функции Win32Check





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