Текущий архив: 2007.02.11;
Скачать: CL | DM;
ВнизПомогите сделать запрос... Найти похожие ветки
← →
serko © (2007-01-10 21:39) [0]Ребят привет!
У меня есть таблица с данными типа:
№ ФИО ОЦЕНКА
1 Иванов 2
2 Петров 3
3 Петров 5
4 Петров 2
5 Сидовов 5
Мне нужно сгруппировать данные (или как там правильно) что бы получилась таблица ввиде:
1 Иванов 0/1
2 Петров 2/3
3 Сидоров 1/1
т.е. отображается сколько попыток СДАЧИ ЭКЗАМЕНА было и сколько из них он сдал на положительную оценку (3<=).
Помогите сделать это рациональным способом...
← →
try © (2007-01-10 22:12) [1]
SELECT ФИО, SUM(CAST((ОЦЕНКА/2-0.1)/2 AS INTEGER)), COUNT(*)
GROUP BY ФИО
← →
serko © (2007-01-10 22:37) [2]из каких это соображений выражение - CAST((ОЦЕНКА/2-0.1)/2
При активации IBDataSet выскакивает ошибка ".... Token unknown line 2 char 1 GROUP"
Че это такое?
← →
try © (2007-01-10 23:06) [3]1. Из соображения иметь 0, если 2, и 1, если 3, 4 или 5
2. Приводи текст реального запроса.
← →
serko © (2007-01-10 23:22) [4]Ну так я собственно ниче и не поменял
SELECT FIO, SUM(CAST((OCENKA/2-0.1)/2 AS INTEGER)), COUNT(*)
GROUP BY FIO
Гы... а нужно было всего навсего FROM EKZAM добавить...
И все заработало... СПАСИБО!
А можна сделать чтобы Эти данные заносились в один столбик "РЕЙТИНГ" (а не в два "SUM" и "COUNT") ввиде "3 из 10"? Как это сделать?
← →
try © (2007-01-10 23:26) [5]Ну да, я FROM упустил :)))
> А можна сделать чтобы Эти данные заносились в один столбик
> "РЕЙТИНГ" (а не в два "SUM" и "COUNT") ввиде "3 из 10"?
> Как это сделать?
Какая СУБД?
← →
serko © (2007-01-10 23:34) [6]FIREBIRD
← →
try © (2007-01-10 23:43) [7]
SELECT
T1.FIO,
(SELECT SUM(CAST((T2.OCENKA/2-0.1)/2 AS INTEGER))
FROM EKZAM T2
WHERE T2.FIO=T1.FIO) || " из " || COUNT(*)
FROM EKZAM T1
GROUP BY FIO
← →
serko © (2007-01-10 23:49) [8]T1 это еще одна таблица с другой структурой?
Где можна почитать подробно о запросах?
← →
try © (2007-01-10 23:49) [9]Да чего там мудрить :)))
SELECT
FIO,
SUM(CAST((OCENKA/2-0.1)/2 AS INTEGER)) || " из " || COUNT(*)
FROM EKZAM
GROUP BY FIO
← →
try © (2007-01-10 23:51) [10]
> T1 это еще одна таблица с другой структурой?
Это псевдоним (алиас) имени таблицы.
> Где можна почитать подробно о запросах?
В документации. Типа SQL Reference Help в IB.
← →
serko © (2007-01-10 23:59) [11]СПАСИБО И НА ТОМ!
← →
brother © (2007-01-11 04:56) [12]http://ibase.ru
← →
serko © (2007-01-11 23:27) [13]
> 1. Из соображения иметь 0, если 2, и 1, если 3, 4 или 5
Незнаю почему но "3" не учитываются...
я так понимаю получается:
(2/2-0.1)/2=0,45 =0
(3/2-0.1)/2=0,7 =1 но вот данный случай почему то не проходит...
(4/2-0.1)/2=0,95 =1
(5/2-0.1)/2=1,2 =1
← →
try © (2007-01-11 23:42) [14]
> (3/2-0.1)/2=0,7 =1 но вот данный случай почему то не проходит...
Не может быть!
← →
serko © (2007-01-12 00:07) [15]ну я уже несколько контрольных примеров сделал... ТРОЙКА никак не учитывается...
А че в запросе суммирования по условия нельзя сделать? ну типа OCENKA>=3 then Sum:=sum+1;
← →
Johnmen © (2007-01-12 00:27) [16]
> serko © (12.01.07 00:07) [15]
> А че в запросе суммирования по условия
> нельзя сделать? ну типа OCENKA>=3 then Sum:=sum+1;
Смотря какая версия FB. Проверяй:
SUM(CASE WHEN OCENKA > 2 THEN 1 ELSE 0 END)
← →
serko © (2007-01-12 20:34) [17]Так то лудше! СПАСИБО!
← →
serko © (2007-01-18 22:25) [18]
> Смотря какая версия FB. Проверяй:
> SUM(CASE WHEN OCENKA > 2 THEN 1 ELSE 0 END)
Интересное дело получается... У меня на компе все работает... А на работе не Хочет! Пишет Token unknown ..... "WHEN"
Хотя и дома и на работе одна и таже версия FIREBIRD
← →
serko © (2007-01-19 23:22) [19]Надо что-то еще придумать....
я вот придумал:
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(*) не правильно считает...
← →
Johnmen © (2007-01-19 23:25) [20]Этот запрос вообще не должен выполняться.
← →
serko © (2007-01-19 23:52) [21]
> Этот запрос вообще не должен выполняться.
Значит вы в чем то ошибаетесь... Он выполняется, только не до конца правильно...
← →
serko © (2007-01-19 23:54) [22]там еще в конце есть:
GROUP BY a.FIO
Незнаю куда оно могло деться...
← →
Johnmen © (2007-01-20 00:22) [23]На каких данных неверно? (много приводить не надо)
← →
serko © (2007-01-21 21:52) [24]
> COUNT(*) не правильно считает...
Получается число больше реального....
← →
Johnmen © (2007-01-21 21:57) [25]На каких данных неверно? (много приводить не надо)
← →
serko © (2007-01-21 22:45) [26]Что значит на КАКИХ?
← →
Johnmen © (2007-01-21 23:18) [27]Это значит, приводи здесь исходные данные (только немного), на которых вышеозначенный запрос неверно считает COUNT.
← →
serko © (2007-01-21 23:26) [28]как я их приведу? они же в базе... а данные там такие как в [0]
Запрос [7] неправильно считает первую часть, но COUNT(*) при этом правильно, а запрос [19] - наоборот...
← →
Johnmen © (2007-01-22 01:14) [29]Я не поленился проверить.
Все запросы, и [7], и [9], и [19] выполненные на данных из [0] возвращают ожидаемый результат, указанный в [0].
(Единственное что, так это приведение типов указывал явно, т.к. тестил под IB6. Под FB этого делать не надо).
← →
serko © (2007-01-22 23:25) [30]Ну незнаю...
Если есть возможность гляньте эту базу...
www.progiseregi.narod.ru/other/BASE.rar
← →
Johnmen © (2007-01-22 23:36) [31]Глянуть возможности нет, т.к. на этом компе нет и не будет уже FB.
На котором есть доберусь недели через 2.
← →
unknown © (2007-01-22 23:53) [32]Скачал базу, проверил запрос из [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.
А для ответов я бы отдельную таблицу сделал.
← →
serko © (2007-01-23 22:17) [33]Да уж, я тоже уже убедился что все правильно...
Копался, копался и нашел...
> А для ответов я бы отдельную таблицу сделал.
Чем она в этой таблице мешает?
← →
unknown © (2007-01-23 23:29) [34]
> 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,
Насколько я понял, это результаты тестирования.
В тестах ведь кол-во ответов фиксировано? Значит можно организовать
отдельную таблицу с этими ответами.
← →
unknown © (2007-01-23 23:36) [35]Даже если кол-во ответов не фиксировано, всеравно можно в отдельную
таблицу вынести :)
← →
serko © (2007-01-24 22:43) [36]Не вижу я привелегий, чтобы заводить еще одну таблицу...
Это поле только для информации о номере вопроса, его ответа и тот варинт который выбран...
Страницы: 1 вся ветка
Текущий архив: 2007.02.11;
Скачать: CL | DM;
Память: 0.53 MB
Время: 0.041 c