Интересная задача

  • Автор темы AINS
  • Дата начала
A

AINS

#1
В общем придумал такую задачу, попробуйте решить и напишите ответ.

Есть таблица, в которой указан id, user, date, sum, из таблицы надо выбрать тремя разными способами, какая з/п была у user скажем 15.02.2001? Число 15 может быть разным и его может не быть в таблице.

id user dat sum
1 Пупкин 01.01.2001 1000
2 Пупкин 01.02.2001 1500
3 Пупкин 01.03.2001 2000
4 Пупкин 01.04.2001 2500
5 Пупкин 01.05.2001 3000
6 пупкин 01.06.2001 3500
 
E
#2
Ой насмешили .... :( тут на понт не берутся, тем более видно, что это 1 семестр 1-го курса, если не школа совсем.
Свои задания решать надо самому! А тут можно показать как вы круто справились, и ждать похвалы.
 
A

AINS

#3
Ой насмешили .... :( тут на понт не берутся, тем более видно, что это 1 семестр 1-го курса, если не школа совсем.
Свои задания решать надо самому! А тут можно показать как вы круто справились, и ждать похвалы.
Я попросил решить задачу а не высказываться по поводу семестров. Свою похвалу я получаю деньгами в день з/п, поэтому если не можете ответить на задачу то просьба не флудить по пустякам.
 
E
#4
За такие "задачи" не зп надо давать, а брать мзду за ущерб, нанесенный предприятию, временем потраченным впустую. а не на реальную работу. :(
 
A

AINS

#5
За такие "задачи" не зп надо давать, а брать мзду за ущерб, нанесенный предприятию, временем потраченным впустую. а не на реальную работу. :(
Обязательно передам ваши пожелания своему босу =) а пока я все жду ответ на задачу.
 
E
#6
Вот вам еще одна интересная задача:
Имеется таблица курсов валют
Код:
CREATE TABLE КУРСЫ (
ДАТА DATETIME,
ВАЛЮТА CHAR(3),
КУРС NUMERIC,
PRIMARY KEY (ДАТА, ВАЛЮТА)
);
Данные:

Дата Валюта Курс
------------------------
01.09.04 USD 29.8
02.09.04 EUR 35.4
03.09.04 USD 29.7
05.09.04 USD 29.6
06.09.04 USD 29.8
06.09.04 EUR 35.6
...

Написать запрос, выдающий курс заданной валюты на заданную дату.
Курс считается определенным:
1) Если для данной валюты и даты имеется запись
2) Имеется, по крайней мере, одна запись для заданной валюты, с датой не превосходящей заданной.

Смогете?

ЗЫ: Только стандарт SQL-92
 
04.09.2006
2 566
3
#7
Дальнейшие понты и флуд будут награждаться предупреждениями и банами...
 
B

BurcevD

#8
select top 1 КУРС
from КУРСЫ
where Валюта='USD' and Дата<='01/09/08'
ORDER BY Дата DESC
 
B

BurcevD

#10
select Курс
from Курсы
where Валюта='USD' and Дата=(Select MAX(Дата) from Курсы Where Дата<=<Нужная дата>)
 
E
#11
BurcevD О это другое дело, пять баллов. :(

Надо развить тему, для таких вот интересных задач.
 
A

Aleksey

#12
Подзапрос
(Select MAX(Дата) from Курсы Where Дата<=<Нужная дата>)
вернет максимальную дату (меньшую или равную <Нужная дата>) не зависмо от кода валюты. Соответственно внешний запрос не сможет найти курс валюты, если он на эту дату не присутствует в таблице курсов ... :(

Так что пока не 5 баллов.

Надо указать валюту в подзапросе:
select Курс
from Курсы
where Валюта='USD' and Дата=(Select MAX(Дата) from Курсы Where Дата<=<Нужная дата> AND Валюта='USD')
 
E
#13
Aleksey Дада ... а я и проглядел, обрадовавшись увидев подзапрос с максом.
 
B

BurcevD

#14
В принципе я это тоже проглядел =) но иммел ввиду, что для конкретной валюты
 
A

Aleksey

#15
А заметить можно только если данные таблицы смотреть. Если бы для всех валют курсы бы выставлялись в определенный день, тогда бы работало, а так в данных "дырки". Хотя техническое задание предусматривает "дырки" :blink:
2) Имеется, по крайней мере, одна запись для заданной валюты, с датой не превосходящей заданной.
P.S. Если честно, то я в свое время с пересчетом валют намучился, так что просто глаз "пристрелян" оказался :(