![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите сделать запрос... [D7, XP]
serko © (2007-01-10 21:39:00)Ребят привет!
У меня есть таблица с данными типа:
№ ФИО ОЦЕНКА
1 Иванов 2
2 Петров 3
3 Петров 5
4 Петров 2
5 Сидовов 5
Мне нужно сгруппировать данные (или как там правильно) что бы получилась таблица ввиде:
1 Иванов 0/1
2 Петров 2/3
3 Сидоров 1/1
т.е. отображается сколько попыток СДАЧИ ЭКЗАМЕНА было и сколько из них он сдал на положительную оценку (3<=).
Помогите сделать это рациональным способом...
serko (2007-01-24 22:43:00) [1]Не вижу я привелегий, чтобы заводить еще одну таблицу...
Это поле только для информации о номере вопроса, его ответа и тот варинт который выбран...
unknown (2007-01-23 23:36:00) [2]Даже если кол-во ответов не фиксировано, всеравно можно в отдельную
таблицу вынести :)
unknown (2007-01-23 23:29:00) [3]
> serko © (23.01.07 22:17) [33]
>
> Чем она в этой таблице мешает?
Какое-то неправильное поле
otveti char(200)
с содержимым типа
4601-5=5, 4602-4=4, 4603-3=3, 4604-4=4, 4605-2=4, 4606-3=2, 4607-4=4, 4608-4=4, 4609-2=2, 4610-1=1, 4611-3=3, 4612-4=4, 4613-2=2, 4614-1=1, 4615-4=4, 4616-2=2, 4617-2=2, 4618-1=1, 4619-3=3, 4620-3=3,
Насколько я понял, это результаты тестирования.
В тестах ведь кол-во ответов фиксировано? Значит можно организовать
отдельную таблицу с этими ответами.
serko (2007-01-23 22:17:00) [4]Да уж, я тоже уже убедился что все правильно...
Копался, копался и нашел...
> А для ответов я бы отдельную таблицу сделал.
Чем она в этой таблице мешает?
unknown (2007-01-22 23:53:00) [5]Скачал базу, проверил запрос из [19]
FIO CONCATENATION
1 0 из 21
2 0 из 3
3 0 из 4
4 0 из 13
5 0 из 8
6 1 из 7
7 0 из 5
8 0 из 6
Андреева 3 из 31
Боярчук 1 из 10
Булгакова 3 из 12
Булитко 5 из 32
Важненко 1 из 2
Вертегел 2 из 13
Гнецко 1 из 19
Горожанкина 0 из 4
Данилова 12 из 29
Дидык 7 из 17
Лысенко 0 из 2
Мазнюк 7 из 20
Малышко 0 из 18
Манусова 0 из 30
Неничас 1 из 9
Потапова 0 из 5
Потоцкая 1 из 25
Савчук 0 из 13
Смирнов 1 из 1
Строганов 8 из 53
Сыс 3 из 18
Тягунов 2 из 14
Чернова 0 из 23
Все верно.
p.s.
А для ответов я бы отдельную таблицу сделал.
Johnmen (2007-01-22 23:36:00) [6]Глянуть возможности нет, т.к. на этом компе нет и не будет уже FB.
На котором есть доберусь недели через 2.
serko (2007-01-22 23:25:00) [7]Ну незнаю...
Если есть возможность гляньте эту базу...
www.progiseregi.narod.ru/other/BASE.rar
Johnmen (2007-01-22 01:14:00) [8]Я не поленился проверить.
Все запросы, и [7], и [9], и [19] выполненные на данных из [0] возвращают ожидаемый результат, указанный в [0].
(Единственное что, так это приведение типов указывал явно, т.к. тестил под IB6. Под FB этого делать не надо).
serko (2007-01-21 23:26:00) [9]как я их приведу? они же в базе... а данные там такие как в [0]
Запрос [7] неправильно считает первую часть, но COUNT(*) при этом правильно, а запрос [19] - наоборот...
Johnmen (2007-01-21 23:18:00) [10]Это значит, приводи здесь исходные данные (только немного), на которых вышеозначенный запрос неверно считает COUNT.
serko (2007-01-21 22:45:00) [11]Что значит на КАКИХ?
Johnmen (2007-01-21 21:57:00) [12]На какихданных неверно? (много приводить не надо)
serko (2007-01-21 21:52:00) [13]
> COUNT(*) не правильно считает...
Получается число больше реального....
Johnmen (2007-01-20 00:22:00) [14]На каких данных неверно? (много приводить не надо)
serko (2007-01-19 23:54:00) [15]там еще в конце есть:
GROUP BY a.FIO
Незнаю куда оно могло деться...
serko (2007-01-19 23:52:00) [16]
> Этот запрос вообще не должен выполняться.
Значит вы в чем то ошибаетесь... Он выполняется, только не до конца правильно...
Johnmen (2007-01-19 23:25:00) [17]Этот запрос вообще не должен выполняться.
serko (2007-01-19 23:22:00) [18]Надо что-то еще придумать....
я вот придумал:
SELECT a.FIO,
(SELECT COUNT(b.OCENKA)
FROM EKZAM b
WHERE (b.FIO=a.FIO) and (b.OCENKA BETWEEN 3 and 5)) || ' из ' ||
COUNT(*)
FROM EKZAM a
Но тут другая проблема - COUNT(*) не правильно считает...
serko (2007-01-18 22:25:00) [19]
> Смотря какая версия FB. Проверяй:
> SUM(CASE WHEN OCENKA > 2 THEN 1 ELSE 0 END)
Интересное дело получается... У меня на компе все работает... А на работе не Хочет! Пишет Token unknown ..... "WHEN"
Хотя и дома и на работе одна и таже версия FIREBIRD
serko (2007-01-12 20:34:00) [20]Так то лудше! СПАСИБО!