Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите решить задачку / 8 сообщений из 8, страница 1 из 1
14.08.2002, 17:45:15
    #32043293
Alexander79
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачку
В таблице имеется поле Count, допустимыми значениями которого являются: 0, 1, 2, 3.
Как создать запрос, состоящий из одного запроса SELECT, который выдавал бы сумму для данного поля, в которую для значения Count = 0 включалось бы 1, для Count = 1 – 5, для Count = 2 – 9, для Count = 3 – 18.

Имеется таблица СТУДЕНТЫ, содержащая поля ФИО, СреднийБаллВШколе, СреднийБаллВУниверситете, СрокОбученияВУниверситете.
Как создать запрос, состоящий из одного запроса SELECT, который выдавал бы ФИО и, для студентов со сроком обучения > 1 года – СреднийБаллВУниверситете, а для студентов со сроком обучения < 1 года – СреднийБаллВШколе.
...
Рейтинг: 0 / 0
14.08.2002, 18:41:26
    #32043327
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачку
См. в BOL функцию CASE

Приблизительно так
Код: plaintext
1.
2.
3.
4.
select sum(case [count] when  0  then  1  
    when  1  then  5  
    when  2  then  9 
    when  3  thrn  18 ) as xxx from mytable


Со вторым запросом попробуйте справиться сами
...
Рейтинг: 0 / 0
14.08.2002, 18:42:23
    #32043328
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачку
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT SUM(CASE Count
		WHEN  0  THEN  1 
		WHEN  1  THEN  5 
		WHEN  2  THEN  9 
		WHEN  3  THEN  18 
	END)

Код: plaintext
1.
2.
3.
4.
SELECT ФИО, CASE 
		WHEN СрокОбученияВУниверситете>= 1  THEN СреднийБаллВУниверситете
		ELSE СреднийБаллВШколе
	END
...
Рейтинг: 0 / 0
14.08.2002, 18:43:25
    #32043330
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачку
Ну вот, пока писал Glory уже и ответил. Видимо, надо быстрее писать :)
...
Рейтинг: 0 / 0
14.08.2002, 18:44:53
    #32043331
MichaelGK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачку
Признайтесь Александр, Вам эту задачку подбросили на каком-нибудь тестировании, или у Вас плохо спроектированная база.
...
Рейтинг: 0 / 0
14.08.2002, 18:48:48
    #32043332
Зайцев Фёдор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачку
Не признавайтесь !!!
MichaelGK может не знать о существовании других вариантов ответов и его переклинит, если Вы ответите что-нибудь типа "ни то, ни другое"
...
Рейтинг: 0 / 0
14.08.2002, 19:13:20
    #32043339
Alexander79
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачку
Спасибо Glory и ВладимирМ.
А MichaelGK действительно прав.
Подскажите, есть ли какой-нибудь чат на тему программирования вообще, и SQL, Delphi в частности.
...
Рейтинг: 0 / 0
14.08.2002, 19:40:41
    #32043347
dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачку
Могу еще предложить такой вариант (что-то вдруг захотелось одной формулой и без Case :-) ):
Код: plaintext
select sum( 4 *[count]+ 1 + 5 *(sign([count]- 3 )+ 1 )) from mytable 
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите решить задачку / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]