Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-1083417556
Lena19
2004-05-01 17:19
2004.05.23
текст разными цветами и шрифтом + bitmap


6-1080710055
Mistic
2004-03-31 09:14
2004.05.23
Зависание компа из-за сервера


3-1083300623
nstur
2004-04-30 08:50
2004.05.23
По Oracle


4-1081157947
Andery
2004-04-05 13:39
2004.05.23
Создание модального окна


14-1083495103
Ig
2004-05-02 14:51
2004.05.23
А почему бы не сделать новый форум, а точнее новую тему форума?





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