Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите сделать запрос... [D7, XP]


Страницы:   1 2

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]

Так то лудше! СПАСИБО!


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо