|
Запрос на максимум
|
|||
---|---|---|---|
#18+
Помогите, пожалуйста, дали задание по Visual FoxPro, я смогла сделать меню и форму, а запросы не получаются. Подскажите, хотя бы один: выделить дни недели за указанный период (это по фильтру сделала), отличающиеся максимальным числом читателей, обслуженных конкретной кафедрой. Таблица "Статистика" (в библиотеке 3 отдела - аб,чз,кх, в каждом по две кафедры -1,2, в каждом отделе по 10 сотрудников, какие-либо 2 имеют выходной каждый день в течении 6 рабочих дней, т.е. фактически работают 8 сотрудников): Таб.№ сотруд. Дата День недели Отдел Кафедра Кол-во читателей 101 15.09.09 вторник аб 1 25 102 15.09.09 вторник аб 1 13 ....... 106 ---- ------ чз 2 18 и так вся неделя заполнена. Я поняла задание так: нужно посчитать кол-во читателей каждой кафедры за день и вывести день, когда их было max 17.09.09 четверг аб 1 77 19.09.09 суббота аб 2 100 15.09.09 вторник чз 1 107 17.09.09 четверг чз 2 66 20.09.09 воскресенье кх 1 55 19.09.09 суббота кх 2 88 Наверно, кому-то мой запрос покажется ерундой, но нам поставили этот предмет на сессию и просто дали задание, а для меня Фокспро - темный лес. Я же не программист... Буду рада любой помощи, проект приложила ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2010, 22:26 |
|
Запрос на максимум
|
|||
---|---|---|---|
#18+
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2010, 18:13 |
|
Запрос на максимум
|
|||
---|---|---|---|
#18+
вот получила: SELECT Statistika.dennedeli, Statistika.otdel, Statistika.kafedra,; MAX(Statistika.kolchit); FROM ; Statistika; WHERE ( Statistika.chislo BETWEEN CTOD("09/15/09") AND CTOD("09/20/09"); AND Statistika.kafedra = ( 1 ) ); OR Statistika.kafedra = ( 2 ); GROUP BY Statistika.dennedeli, Statistika.otdel, Statistika.kafedra; ORDER BY 4 а как мне сделать так, чтобы сначала суммировать кол-во читателей за день, обслуженных например 1 кафедрой абонемента, а потом вывести день, в который читателей было max ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2010, 22:50 |
|
Запрос на максимум
|
|||
---|---|---|---|
#18+
вот получила: SELECT Statistika.dennedeli, Statistika.otdel, Statistika.kafedra,; MAX(Statistika.kolchit); FROM ; Statistika; WHERE ( Statistika.chislo BETWEEN CTOD("09/15/09") AND CTOD("09/20/09"); AND Statistika.kafedra = ( 1 ) ); OR Statistika.kafedra = ( 2 ); GROUP BY Statistika.dennedeli, Statistika.otdel, Statistika.kafedra; ORDER BY 4 а как мне сделать так, чтобы сначала суммировать кол-во читателей за день, обслуженных например 1 кафедрой абонемента, а потом вывести день, в который читателей было max ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2010, 22:58 |
|
Запрос на максимум
|
|||
---|---|---|---|
#18+
ну, если уж на форуме никто не может подсказать решение моего запроса, значит запросы настолько сложные, я-то и тем более не смогу выполнить задание ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2010, 23:50 |
|
Запрос на максимум
|
|||
---|---|---|---|
#18+
nionkaну, если уж на форуме никто не может подсказать решение моего запроса, значит запросы настолько сложные, я-то и тем более не смогу выполнить заданиеа что, вариант, предложенный zchvv , не работает? Тогда подробнее опишите, какой результат Вам необходим. Имхо его запрос должен выдавать то, что Вам надо. О. прочитал предыдущий пост а как мне сделать так, чтобы сначала суммировать кол-во читателей за день, обслуженных например 1 кафедрой абонемента, а потом вывести день, в который читателей было max Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2010, 00:20 |
|
Запрос на максимум
|
|||
---|---|---|---|
#18+
tanglir, ничего не получается ((( Вот вроде просто найти из шести SUM(Statistika.kolchit) найти MAX , а никак не выводится ((( ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2010, 20:53 |
|
Запрос на максимум
|
|||
---|---|---|---|
#18+
nionka, чего не получается-то? внутренний запрос (тот, что t0) выводит суммы или нет? запрос на строках 2-5 выводит нужный максимум или нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2010, 21:06 |
|
Запрос на максимум
|
|||
---|---|---|---|
#18+
tanglirnionka, чего не получается-то? внутренний запрос (тот, что t0) выводит суммы или нет? запрос на строках 2-5 выводит нужный максимум или нет? Пишет missing operand ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2010, 21:28 |
|
Запрос на максимум
|
|||
---|---|---|---|
#18+
tanglir, может быть, пропущено AS? Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2010, 21:37 |
|
Запрос на максимум
|
|||
---|---|---|---|
#18+
Версия FoxPro какая? Все эти "навороты" с подзапросами будут работать только в VFP9. Да и то, не факт. Надо проверять на тестовых данных. И еще. В форуме помогают по желанию. Добровольно. Никто никому ничего не обязан. Если на Ваш вопрос не ответили, это не значит, что на Ваш вопрос нет ответа. Возможно, просто нет желания отвечать. Также напомню, что FoxPro - не есть монополист на стандарт Select-SQL. Более того, синтаксис запросов Select-SQL в своей основе одинаковый вообще для всех языков программирования. Разумеется, есть нюансы (диалекты), но в своей основе он одинаковый. Так он был задуман. Посмотрите в других форумах по другим базам данных как вообще составляются подобные SQL-запросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2010, 16:29 |
|
Запрос на максимум
|
|||
---|---|---|---|
#18+
ВладимирМ, версия 9. Я смотрю не только на этом форуме, но когда совсем не знаешь программу, очень трудно понять в чем ошибка. Казалось бы просто в MAX(SUM(kolchit)), но никак. Но все равно спасибо, что откликнулись, буду пытаться что-то еще придумать ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2010, 17:36 |
|
Запрос на максимум
|
|||
---|---|---|---|
#18+
nionkaКазалось бы просто в MAX(SUM(kolchit)), но никак. Потому что это бессмысленная конструкция. Нужно искать MAX() от результата работы другого запроса. Т.е. использовать подзапрос. Схематично примерно так Код: plaintext 1. 2.
Другой вариант решения основан на том факте, что если упорядочить результат выборки, то, естественно, первая (или последняя) запись выборки и будет максимумом. Т.е. используется такая схема Код: plaintext 1. 2. 3. 4. 5. 6.
Группировка по полю chislo, но сортировка по результату расчета, причем в порядке убывания. Т.е. в результирующей выборке максимальное количество будет у первой записи ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2010, 17:51 |
|
Запрос на максимум
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2.
Другой вариант решения основан на том факте, что если упорядочить результат выборки, то, естественно, первая (или последняя) запись выборки и будет максимумом. Т.е. используется такая схема Код: plaintext 1. 2. 3. 4. 5. 6.
Группировка по полю chislo, но сортировка по результату расчета, причем в порядке убывания. Т.е. в результирующей выборке максимальное количество будет у первой записи[/quot] Спасибо! 2 вариант подходит, но проблема в том, что у меня несколько максимумов, а выводится первый только, н-р: абонемент 166 читателей, а читальный зал 200 и книгохранилище 180 - уже не выводится ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2010, 22:46 |
|
|
start [/forum/topic.php?fid=41&fpage=99&tid=1585333]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 333ms |
total: | 458ms |
0 / 0 |