![]() |
| ||
|
|
Новости |
Поиск |
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<=).
Помогите сделать это рациональным способом...
Johnmen (2007-01-12 00:27:00) [21]
> 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 00:07:00) [22]ну я уже несколько контрольных примеров сделал... ТРОЙКА никак не учитывается...
А че в запросе суммирования по условия нельзя сделать? ну типа OCENKA>=3 then Sum:=sum+1;
try (2007-01-11 23:42:00) [23]
> (3/2-0.1)/2=0,7 =1 но вот данный случай почему то не проходит...
Не может быть!
serko (2007-01-11 23:27:00) [24]
> 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
brother (2007-01-11 04:56:00) [25]http://ibase.ru
serko (2007-01-10 23:59:00) [26]СПАСИБО И НА ТОМ!
try (2007-01-10 23:51:00) [27]
> T1 это еще одна таблица с другой структурой?
Это псевдоним (алиас) имени таблицы.
> Где можна почитать подробно о запросах?
В документации. Типа SQL Reference Help в IB.
try (2007-01-10 23:49:00) [28]Да чего там мудрить :)))
SELECT
FIO,
SUM(CAST((OCENKA/2-0.1)/2 AS INTEGER)) || ' из ' || COUNT(*)
FROM EKZAM
GROUP BY FIO
serko (2007-01-10 23:49:00) [29]T1 это еще одна таблица с другой структурой?
Где можна почитать подробно о запросах?
try (2007-01-10 23:43:00) [30]
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:34:00) [31]FIREBIRD
try (2007-01-10 23:26:00) [32]Ну да, я FROM упустил :)))
> А можна сделать чтобы Эти данные заносились в один столбик
> "РЕЙТИНГ" (а не в два "SUM" и "COUNT") ввиде "3 из 10"?
> Как это сделать?
Какая СУБД?
serko (2007-01-10 23:22:00) [33]Ну так я собственно ниче и не поменял
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:06:00) [34]1. Из соображения иметь 0, если 2, и 1, если 3, 4 или 5
2. Приводи текст реального запроса.
serko (2007-01-10 22:37:00) [35]из каких это соображений выражение - CAST((ОЦЕНКА/2-0.1)/2
При активации IBDataSet выскакивает ошибка ".... Token unknown line 2 char 1 GROUP"
Че это такое?
try (2007-01-10 22:12:00) [36]
SELECT ФИО, SUM(CAST((ОЦЕНКА/2-0.1)/2 AS INTEGER)), COUNT(*)
GROUP BY ФИО