Faydali Script'ler

 

  • Diyelim ki pkey sizin m??terinizin numaras? ve siz bu m??terileri aram??s?n?z. Ayn? m??teri i?in iki arama aras?ndaki s?reyi bulmak isterseniz  :

    ?rnek tablo ?u ?ekilde olsun.

    pkey datecreated
    10 06/02/2007 10:28:25
    10 06/02/2007 11:28:25
    10 06/02/2007 12:28:25
    20 06/02/2007 10:28:25
    20 06/02/2007 09:28:25
    20 06/02/2007 10:20:25
    30 06/02/2007 10:28:25
    30 07/02/2007 10:28:25
    30 07/02/2007 01:28:25

    cozum 1 :

     

    SELECT u.pkey,u.sirano,u.datecreated,g.datecreated,

    TRUNC(((((86400*(u.datecreated-g.datecreated))/60)/60)/24)/7) weeks,

    TRUNC((((86400*(u.datecreated-g.datecreated))/60)/60)/24) days,

    TRUNC(((86400*(u.datecreated-g.datecreated))/60)/60)-24*(TRUNC((((86400*(u.datecreated-g.datecreated))/60)/60)/24)) hours,

    TRUNC((86400*(u.datecreated-g.datecreated))/60)-60*(TRUNC(((86400*(u.datecreated-g.datecreated))/60)/60)) minutes,

    TRUNC(86400*(u.datecreated-g.datecreated))-60*(TRUNC((86400*(u.datecreated-g.datecreated))/60)) seconds

    FROM

    (SELECT e.*,row_number() over (PARTITION BY e.pkey ORDER BY e.datecreated) sirano FROM tablo e) u,

    (SELECT e.*,row_number() over (PARTITION BY e.pkey ORDER BY e.datecreated) sirano FROM tablo e) g

    WHERE u.pkey = g.pkey(+) AND u.sirano = g.sirano(+)+1

     

    cozum 2 :

     

    WITH std AS
    (SELECT e.*,row_number() over (PARTITION BY pkey ORDER BY e.datecreated) sirano FROM tablo e)
    (SELECT
    u.pkey,u.sirano,u.datecreated,g.datecreated,
    TRUNC(((((86400*(u.datecreated-g.datecreated))/60)/60)/24)/7) weeks,
    TRUNC((((86400*(u.datecreated-g.datecreated))/60)/60)/24) days,
    TRUNC(((86400*(u.datecreated-g.datecreated))/60)/60)-24*(TRUNC((((86400*(u.datecreated-g.datecreated))/60)/60)/24)) hours,
    TRUNC((86400*(u.datecreated-g.datecreated))/60)-60*(TRUNC(((86400*(u.datecreated-g.datecreated))/60)/60)) minutes,
    TRUNC(86400*(u.datecreated-g.datecreated))-60*(TRUNC((86400*(u.datecreated-g.datecreated))/60)) seconds
    FROM std u , std g
    WHERE u.pkey = g.pkey(+) AND u.sirano = g.sirano(+)+1
    )

     

    cozum 3 :

     

    SELECT pkey, datecreated,
    TRUNC(((((86400*(datecreated-lag (datecreated,1) over (ORDER BY datecreated)))/60)/60)/24)/7) weeks,
    TRUNC((((86400*(datecreated-lag (datecreated,1) over (ORDER BY datecreated)))/60)/60)/24) days,
    TRUNC(((86400*(datecreated-lag (datecreated,1) over (ORDER BY datecreated)))/60)/60)-24*(TRUNC((((86400*(datecreated-lag (datecreated,1) over (ORDER BY datecreated)))/60)/60)/24)) hours,
    TRUNC((86400*(datecreated-lag (datecreated,1) over (ORDER BY datecreated)))/60)-60*(TRUNC(((86400*(datecreated-lag (datecreated,1) over (ORDER BY datecreated)))/60)/60)) minutes,
    TRUNC(86400*(datecreated-lag (datecreated,1) over (ORDER BY datecreated)))-60*(TRUNC((86400*(datecreated-lag (datecreated,1) over (ORDER BY datecreated)))/60)) seconds
    FROM tablo