Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.23;
Скачать: CL | DM;

Вниз

Подскажите запрос   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.03 c
1-1083835108
Volodya_
2004-05-06 13:18
2004.05.23
marquee


6-1081327421
<DeL.>
2004-04-07 12:43
2004.05.23
Скорость подключения


3-1082149737
lockheed_man
2004-04-17 01:08
2004.05.23
поиск записи в таблице


1-1083760896
griban
2004-05-05 16:41
2004.05.23
combobox


1-1084181710
LAnd
2004-05-10 13:35
2004.05.23
Как найти мантису и экспоненту числа?