Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подскажите запрос [D5, Paradox]


john ©   (2004-04-26 15:25:00) 

Мастера, большая просьба, подскажите запрос.Есть таблица-{номер чека,позиция в чеке, сумма позиции в чеке}.Нужна максимальная сумма всего чека.Спасибо


Соловьев   (2004-04-26 17:05:00) [1]

Может так попоробовать, у меня почему-то БДЕ вываливается при таком запросе :)

select t.f1, sum(t.f2)
from table t
group by t.f1
having sum(t.f2) > all (select sum(t2.f2)
                       from table t2
                       where t2.f1 <> t.f1
                       group by t2.f1)


Johnmen   (2004-04-26 16:59:00) [2]

самый простой метод -
select sum(t.f2) s, count(distinct t.f1) c
from table t
и взять первую запись на клиенте и поделить s на c


Соловьев   (2004-04-26 16:55:00) [3]


> john   (26.04.04 16:51) [17]

помнится где-то полтора года назад кто-то из мастеров решил эту задачу с помощью SQL-92 но там надо как-то исхитрится с HAVING
Не помню и в голову не приходит как.

А по поводу среднего - не понятно. Опять максимальный?


john   (2004-04-26 16:51:00) [4]

Большое спасибо mr.Соловьев за идею, все сработало. А если найти не максимальный чек, а среднее значение чека среди множества чеков.Не будет ли у вас идеи по поводу этого вопроса?


Соловьев   (2004-04-26 16:38:00) [5]

самый простой метод -
select t.f1, sum(t.f2)
from table t
group by t.f1
order by 2 desc
и взять первую запись на клиенте


Johnmen   (2004-04-26 16:27:00) [6]

Да, вложенное агрегирование не идет... :)
Для локалскл вообще, видимо, придется извращаться...


Соловьев   (2004-04-26 16:21:00) [7]


> SELECT номер чека, MAX(SUM(сумма позиции в чеке))

неужели LocalSQL - поддерживает такое?


john   (2004-04-26 16:19:00) [8]

johnmen на твой запрос SQL Explorer(я в нем пишу запросы) выдает ошибку - "Capability not supported", что делать?


john   (2004-04-26 16:15:00) [9]

johnmen на твой запрос SQL Explorer(я в нем пишу запросы)выдает ошибку - "Capability not supported", что делать?


john   (2004-04-26 16:09:00) [10]

johnmen твой зарос SQL EXPLORER выдает ошибку-"Capability not supported"


Johnmen   (2004-04-26 15:59:00) [11]

SELECT номер чека, MAX(SUM(сумма позиции в чеке))
FROM ...
GROUP BY номер чека


sniknik   (2004-04-26 15:52:00) [12]

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


john   (2004-04-26 15:51:00) [13]

Прошу прощение, неправильно сформулирован вопрос.Нужна максимально большая продажа(т.е чек),предположим из ста чеков


sniknik   (2004-04-26 15:48:00) [14]

> я думаю автор имел ввиду - сумму за конкретный товар
а, тогда вместо SUM надо MAX поставить. но вот про несколько позиций в одном, такое чаще запрещают. (политика чтобы не было махинаций) и скорее будет 5 записей с 1 товаром.


Johnmen   (2004-04-26 15:47:00) [15]

>я думаю автор имел ввиду - сумму за конкретный товар -

Я думаю, что нет. Т.к. есть поле <сумма позиции в чеке>...


sniknik   (2004-04-26 15:45:00) [16]

SELECT SHOPINDEX, CASHNUMBER, ZNUMBER, CHECKNUMBER, SUM(TOTALRUB) AS TOTALRUB
FROM CASHSAIL
GROUP BY SHOPINDEX, CASHNUMBER, ZNUMBER, CHECKNUMBER

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


Соловьев   (2004-04-26 15:45:00) [17]


> Это как ????? У чека м.б. несколько сумм ????????

я думаю автор имел ввиду - сумму за конкретный товар - так как можно купить несколько наименований одного товара, и тогда в чеке пишут - например 5 буханок = 5х12.0 руб


Vlad   (2004-04-26 15:38:00) [18]

select sum(сумма_позиции_в_чеке) where номер_чека = ...
это сумма всех позиций в чеке.

select max(сумма_позиции_в_чеке) where номер_чека = ...
это максимальная из сумм позиций в чеке.

А что такое максимальная сумма всего чека ? Какова тогда будет минимальная сумма всего чека ? Бывает ли среднеквадратичная сумма всего чека ?


bushmen   (2004-04-26 15:37:00) [19]

>У чека м.б. несколько сумм ????????

А что в этом странного? Если в магазине можно купить несколько наименований товаров?!


Johnmen   (2004-04-26 15:32:00) [20]

Это как ????? У чека м.б. несколько сумм ????????


Наверх

Титульная страница Поиск, карта сайта Написать письмо