Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];

Вниз

Обещал разместить здесь предсобеседовательную задачку   Найти похожие ветки 

 
stone ©   (2006-03-29 11:29) [80]


> Paul_K ©   (29.03.06 11:09) [79]
>
> а решение то верное?

было
INSERT INTO #tRate
(SecurityTicker, TradeSystem, RateDate, Course)
SELECT
"EESR", "MMVB", "2005-12-30", 1

в #report
30/12/05 EESR RTS NULL

дальше не смотрел


 
Paul_K ©   (2006-03-29 11:53) [81]

мдя.. слона я не заметил...
надо так ограничение по датам написать было
and tx.RateDate < dateadd(dd,1,@rep_date)

Но присмотрелся к условию
нашел ещё багов:)
у меня оказывается ещё и только ММВБ котировки вылезут к какому-то моменту гы:)
Кстати отсюда вопрос по условию
на дату 2006-01-08 имеем
4 LKOH MMVB 2006-01-04 00:00:00 4.0
9 LKOH RTS 2006-01-07 00:00:00 9.0
что должно быть в ответе? ммвб?  ртс?


 
stone ©   (2006-03-29 13:19) [82]


> что должно быть в ответе? ммвб?  ртс?


> Если котировка на дату Т отсутствует, берется котировка
> с максимальной датой, не превышающей Т.

Значит 8-го будет РТС, а уже 9-го "LKOH", "MMVB", "2006-01-09", 10
Думаю так, но лучше уточнить у Nikolay M. ©


 
Paul_K ©   (2006-03-29 14:52) [83]

хмм.. не совсем так вроде
я уже понял
7-го, 8-го и далее - РТС пока ММВБ не появится.. от так..


 
Paul_K ©   (2006-03-29 15:18) [84]

от так вроде верно....
begin tran
declare @start_date DATETIME,
       @end_date DATETIME,
       @rep_date DATETIME,
       @rate_place varchar(255),
@stock_name  varchar(255),  
@rate_value  Float

set @start_date =convert(datetime,isnull(convert(varchar,@StartDate,3),"0/0/1900"),3)
set @end_date = convert(datetime,isnull(convert(varchar,dateadd(dd,1,@FinishDate),3),"0/0/1900"),3)
set @rep_date=@start_date
while @rep_date<@end_date
begin

insert into #report (date_r,stock_name,rate_place,rate_value)
select distinct  @rep_date,SecurityTicker,null,null
from #tRate
set @rep_date = dateadd(dd,1,@rep_date)
end
declare bla cursor for select date_r,stock_name from #report
open bla
fetch bla into @rep_date,@stock_name
while @@fetch_status=0
begin
     select @rate_place=null, @rate_value=null
      if exists (select 1 from #tRate where RateDate=@rep_date and SecurityTicker=@stock_name having count(*)>1)
       select @rate_place=TradeSystem, @rate_value=Course
         from #tRate
        where RateDate = @rep_date
                 and SecurityTicker=@stock_name
                 and  TradeSystem="MMVB"
      else    
 select top 1 @rate_place=TradeSystem, @rate_value=Course
          from #tRate
                where SecurityTicker=@stock_name
                  and RateDate <= @rep_date
                  and RateDate >= @start_date
         order by RateDate desc
      --select @rep_date,@rate_place,@rate_value,@stock_name
      update  #report
         set  rate_place=@rate_place,
              rate_value=@rate_value
       where  date_r=@rep_date
         and  stock_name=@stock_name
fetch bla into @rep_date,@stock_name
end
close bla

deallocate  bla

commit tran

select convert(varchar,date_r,3),stock_name,rate_place,rate_value   from #report
order by stock_name,date_r

drop table #report

select * from #tRate order by RateDate
drop table #tRate

rep_date                       stock_name rate_place rate_value                                            
------------------------------ ---------- ---------- -----------------------------------------------------
29/12/05                       EESR       NULL       NULL
30/12/05                       EESR       MMVB       1.0
31/12/05                       EESR       MMVB       1.0
01/01/06                       EESR       MMVB       1.0
02/01/06                       EESR       RTS        5.0
03/01/06                       EESR       MMVB       2.0
04/01/06                       EESR       MMVB       2.0
05/01/06                       EESR       MMVB       2.0
06/01/06                       EESR       MMVB       2.0
07/01/06                       EESR       MMVB       2.0
08/01/06                       EESR       MMVB       2.0
09/01/06                       EESR       MMVB       2.0
10/01/06                       EESR       MMVB       2.0
29/12/05                       LKOH       NULL       NULL
30/12/05                       LKOH       NULL       NULL
31/12/05                       LKOH       NULL       NULL
01/01/06                       LKOH       RTS        8.0
02/01/06                       LKOH       MMVB       3.0
03/01/06                       LKOH       MMVB       3.0
04/01/06                       LKOH       MMVB       4.0
05/01/06                       LKOH       MMVB       4.0
06/01/06                       LKOH       MMVB       4.0
07/01/06                       LKOH       RTS        9.0
08/01/06                       LKOH       RTS        9.0
09/01/06                       LKOH       MMVB       10.0
10/01/06                       LKOH       MMVB       10.0


 
Nikolay M. ©   (2006-03-29 15:21) [85]

Виноват, прошу прощения, по работе отвлекали :)
Отвечаю.


> Кстати отсюда вопрос по условию
> на дату 2006-01-08 имеем
> 4 LKOH MMVB 2006-01-04 00:00:00 4.0
> 9 LKOH RTS 2006-01-07 00:00:00 9.0
> что должно быть в ответе? ммвб?  ртс?


На 2006-01-08 будет РТС-ная котировка, значение 9.


 
Paul_K ©   (2006-03-29 15:24) [86]

да у меня уже прошел приступ тупизма:)
проверь кстати тормознутое мое последнее решение. Опять я налажал ?


 
Nikolay M. ©   (2006-03-29 15:27) [87]


> Paul_K ©   (29.03.06 15:18) [84]


Да, такой вариант совпадает с stone ©   (28.03.06 16:55) [36], а у него, если я ничего не упустил, все правильно.

А ты всегда так курсоры обзываешь? :)


 
Paul_K ©   (2006-03-29 15:34) [88]

нет только когда они меня достают?)
а вот вопрос следующий. Быстродействие я не того не анализировал. встает вопрос какой вариантов быстрее и почему?
есть подозрение что мой медленнее. из-за курсора ..


 
Nikolay M. ©   (2006-03-29 15:48) [89]


> Быстродействие я не того не анализировал. встает вопрос
> какой вариантов быстрее и почему?


Я сейчас загружен по самые ушки, надеюсь, в вых напишу свой вариант, набросаю скрипт для заполнения таблицы котировок и сравню твой вариант, stone и свой (если он будет). Результаты и скрипт для прогона теста выложу.
Твой курсор, да еще в транзакции, скорее всего будет не самым быстрым - под транзакцию тоже ресурсы требуются.


 
Paul_K ©   (2006-03-29 15:56) [90]

Твой курсор, да еще в транзакции,
хе а ты вне транзакции курсор запустить попробуй в кверианалайзере.. Я не осилил
если это процедурой оформлять то естессено надо транзакцию убирать



Страницы: 1 2 3 вся ветка

Форум: "Прочее";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.63 MB
Время: 0.057 c
11-1125182052
ebta
2005-08-28 02:34
2006.04.23
just a little bug v2.10


15-1144046356
ORMADA
2006-04-03 10:39
2006.04.23
Delphi7+sp1


2-1144320979
Naganov
2006-04-06 14:56
2006.04.23
Функция MonthOfTheYear


1-1142567293
tigra
2006-03-17 06:48
2006.04.23
Работа с реестром


4-1138861748
Fay
2006-02-02 09:29
2006.04.23
Службы, SERVICE_CONTROL_SHUTDOWN





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский