Форум: "Базы";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
ВнизПодскажите запрос Найти похожие ветки
← →
john (2004-04-26 15:25) [0]Мастера, большая просьба, подскажите запрос.Есть таблица-{номер чека,позиция в чеке, сумма позиции в чеке}.Нужна максимальная сумма всего чека.Спасибо
← →
Johnmen © (2004-04-26 15:32) [1]Это как ????? У чека м.б. несколько сумм ????????
← →
bushmen © (2004-04-26 15:37) [2]>У чека м.б. несколько сумм ????????
А что в этом странного? Если в магазине можно купить несколько наименований товаров?!
← →
Vlad © (2004-04-26 15:38) [3]select sum(сумма_позиции_в_чеке) where номер_чека = ...
это сумма всех позиций в чеке.
select max(сумма_позиции_в_чеке) where номер_чека = ...
это максимальная из сумм позиций в чеке.
А что такое максимальная сумма всего чека ? Какова тогда будет минимальная сумма всего чека ? Бывает ли среднеквадратичная сумма всего чека ?
← →
Соловьев © (2004-04-26 15:45) [4]
> Это как ????? У чека м.б. несколько сумм ????????
я думаю автор имел ввиду - сумму за конкретный товар - так как можно купить несколько наименований одного товара, и тогда в чеке пишут - например 5 буханок = 5х12.0 руб
← →
sniknik © (2004-04-26 15:45) [5]SELECT SHOPINDEX, CASHNUMBER, ZNUMBER, CHECKNUMBER, SUM(TOTALRUB) AS TOTALRUB
FROM CASHSAIL
GROUP BY SHOPINDEX, CASHNUMBER, ZNUMBER, CHECKNUMBER
в поле TOTALRUB в рекордсете будет сумма по чеку, остальные поля это идентификатор чека.
(правда сумма всего одна на чек, выбирать максимальную не из чего ну пусть это она и будет, минимальной же тоже нет ;о)))
← →
Johnmen © (2004-04-26 15:47) [6]>я думаю автор имел ввиду - сумму за конкретный товар -
Я думаю, что нет. Т.к. есть поле <сумма позиции в чеке>...
← →
sniknik © (2004-04-26 15:48) [7]> я думаю автор имел ввиду - сумму за конкретный товар
а, тогда вместо SUM надо MAX поставить. но вот про несколько позиций в одном, такое чаще запрещают. (политика чтобы не было махинаций) и скорее будет 5 записей с 1 товаром.
← →
john (2004-04-26 15:51) [8]Прошу прощение, неправильно сформулирован вопрос.Нужна максимально большая продажа(т.е чек),предположим из ста чеков
← →
sniknik © (2004-04-26 15:52) [9]> Т.к. есть поле <сумма позиции в чеке>...
возможно что и нет, может ошибся, (по супермажной структуре в z отчете нет таблици с заголовками чеков..)
и кстати есть и максимальная сумма чека! (счас вспомнил), есть такая программа "мастеркасс" там можно делать частичную оплату (налом-карточкой-еще раз налом..., тут будет и максимальная сумма но только не чека а как бы одной проплаты)
← →
Johnmen © (2004-04-26 15:59) [10]
SELECT номер чека, MAX(SUM(сумма позиции в чеке))
FROM ...
GROUP BY номер чека
← →
john (2004-04-26 16:09) [11]johnmen твой зарос SQL EXPLORER выдает ошибку-"Capability not supported"
← →
john (2004-04-26 16:15) [12]johnmen на твой запрос SQL Explorer(я в нем пишу запросы)выдает ошибку - "Capability not supported", что делать?
← →
john (2004-04-26 16:19) [13]johnmen на твой запрос SQL Explorer(я в нем пишу запросы) выдает ошибку - "Capability not supported", что делать?
← →
Соловьев © (2004-04-26 16:21) [14]
> SELECT номер чека, MAX(SUM(сумма позиции в чеке))
неужели LocalSQL - поддерживает такое?
← →
Johnmen © (2004-04-26 16:27) [15]Да, вложенное агрегирование не идет... :)
Для локалскл вообще, видимо, придется извращаться...
← →
Соловьев © (2004-04-26 16:38) [16]самый простой метод -
select t.f1, sum(t.f2)
from table t
group by t.f1
order by 2 desc
и взять первую запись на клиенте
← →
john (2004-04-26 16:51) [17]Большое спасибо mr.Соловьев за идею, все сработало. А если найти не максимальный чек, а среднее значение чека среди множества чеков.Не будет ли у вас идеи по поводу этого вопроса?
← →
Соловьев © (2004-04-26 16:55) [18]
> john (26.04.04 16:51) [17]
помнится где-то полтора года назад кто-то из мастеров решил эту задачу с помощью SQL-92 но там надо как-то исхитрится с HAVING
Не помню и в голову не приходит как.
А по поводу среднего - не понятно. Опять максимальный?
← →
Johnmen © (2004-04-26 16:59) [19]самый простой метод -
select sum(t.f2) s, count(distinct t.f1) c
from table t
и взять первую запись на клиенте и поделить s на c
← →
Соловьев © (2004-04-26 17:05) [20]Может так попоробовать, у меня почему-то БДЕ вываливается при таком запросе :)
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)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.036 c