SQL Son 1 Yıl, 1 Ay, 7 Gün, 1 Gün, 30 dakika, 15 dakika vs veri çekmek

Üyelerin son aktif olduğu tarih saati üyeler tablosunda tarih sütununda datetime formatında tuttuğumuzu varsayalım aşağıdaki örnek kod ile son 30 dakikada aktif olanları listeleyebiliriz yada farklı ihtiyaçlar için kullanabilirsiniz Verileri çekmek için kullanacağımız sql sorgusu şöyle olacak:

son 1 yıl için:

SELECT * FROM veriler WHERE tarih >= NOW() - INTERVAL 1 YEAR

son 1 ay için:

SELECT * FROM veriler WHERE tarih >= NOW() - INTERVAL 1 month

son 1 gün için:

SELECT * FROM veriler WHERE tarih >= NOW() - INTERVAL 1 day

son 1 saat için:

SELECT * FROM veriler WHERE tarih >= NOW() - INTERVAL 1 hour

son 30 dakika için:

SELECT * FROM veriler WHERE tarih >= NOW() - INTERVAL 30 minute

gibi gibi örnekleri siz artırabilirsiniz.

Veriler veritabanı tablonuzda tarih sütunundaki zaman date formatında olmalıdır.

Bu İçeriğe Puan Verebilirsiniz
[Toplam: 6 Ortalama: 3.7]

“SQL Son 1 Yıl, 1 Ay, 7 Gün, 1 Gün, 30 dakika, 15 dakika vs veri çekmek” üzerine 6 yorum

  1. Elimde hisse senedi alım veya satım yapan müşteri listesi var. Burada çeşitli eşik değerleri kullanarak bu eşik değerlerine takılan müşterilere ulaşmak istiyorum. Misal aylık 200 haftalık 50 gnlük 25 ve saatlik de 10 ve üzeri işlem yapan müşterilere ulaşmak istiyorum 1 aylık periyotta.
    Ben şubat 2020 için aylık 200 haftalık 50 ve günlük 25 üzeri işlem yapan müşterilere ulaşıyorum fakat saatlik 10 ve üeri işlem yapanlara ulaşamıyorum.
    Yani bu senaryoyu kurgulayamadım. Şöyleki müşteri 13:14 de bir işlem yapmış ve 14:14 arasında 10 ve üzeri işlem yapmış ise bu kayıtları getirsin istiyorum. fakat buna ulaşamadım.
    Senaryoya ait sql yazdığım senaryo aşağıda ama bu senaryo bana 1 saat içerisinde 10 ve üzeri işlem yapanları vermedi.

    SELECT M1.MKY_MUS_MBB_NO,
    E1.HIS_ORD_KAYIT_TARIHI,
    E1.HIS_ORD_KAYIT_ZAMANI

    FROM pods.MKY_TMUSTERI M1,
    pods.HIS_THIS_GNX_EMIRLER E1,
    pods.YTR_THESAP_HESAP,
    pods.MBB_TMUSTERI
    WHERE E1.HIS_ORD_YATIRIM_HESAPNO = pods.YTR_THESAP_HESAP.YTR_HHS_HESAPNO
    AND pods.YTR_THESAP_HESAP.YTR_HHS_YATIRIM_HESAPNO = M1.MKY_MUS_KODU
    AND pods.MBB_TMUSTERI.MBB_NO_GER = M1.MKY_MUS_MBB_NO
    AND pods.YTR_THESAP_HESAP.YTR_HHS_DURUM = ‘A’
    AND M1.MKY_MUS_HSS_GST = ‘E’
    AND pods.MBB_TMUSTERI.MBB_MENSUP_KODU = 1
    AND E1.HIS_ORD_KAYIT_TARIHI BETWEEN ‘03.02.2020’ AND ‘28.02.2020’
    AND E1.HIS_ORD_KAYIT_ZAMANI
    BETWEEN ’09:00:00′ AND ’18:00:00′

    AND ( SELECT COUNT(*)
    FROM PODS.HIS_THIS_GNX_EMIRLER E2
    , PODS.MKY_TMUSTERI M2
    , PODS.YTR_THESAP_HESAP
    , PODS.MBB_TMUSTERI
    WHERE M1.MKY_MUS_MBB_NO = M2.MKY_MUS_MBB_NO
    AND YTR_HHS_YATIRIM_HESAPNO = M2.MKY_MUS_KODU
    AND MBB_NO_GER = M2.MKY_MUS_MBB_NO
    AND E2.HIS_ORD_YATIRIM_HESAPNO
    = YTR_HHS_HESAPNO
    AND YTR_HHS_DURUM = ‘A’
    AND M2.MKY_MUS_HSS_GST = ‘E’
    AND MBB_MENSUP_KODU = 1
    AND E1.HIS_ORD_KAYIT_TARIHI = E2.HIS_ORD_KAYIT_TARIHI
    AND E2.HIS_ORD_KAYIT_ZAMANI BETWEEN ’09:00:00′ AND ’18:00:00′

    AND TO_DATE(E2.HIS_ORD_KAYIT_TARIHI || ‘ ‘ ||E2.HIS_ORD_KAYIT_ZAMANI,’dd/mm/yyyy hh24:mi:ss’) BETWEEN
    TO_DATE(E1.HIS_ORD_KAYIT_TARIHI || ‘ ‘ ||E1.HIS_ORD_KAYIT_ZAMANI,’dd/mm/yyyy hh24:mi:ss’) AND
    TO_DATE(E1.HIS_ORD_KAYIT_TARIHI || ‘ ‘ ||E1.HIS_ORD_KAYIT_ZAMANI,’dd/mm/yyyy hh24:mi:ss’) + 1/24

    )
    >= 10
    ;

  2. Kodlarınızdaki verileri göremediğim için kafamda tam canlandıramadım ama birkaç şey söylemek istiyorum belki fikir verir

    Ben şubat 2020 için aylık 200 haftalık 50 ve günlük 25 üzeri işlem yapan müşterilere ulaşıyorum fakat saatlik 10 ve üeri işlem yapanlara ulaşamıyorum.
    

    demeniz üzere;

    2020 için aylık 200 haftalık 50 ve günlük 25 üzeri işlem yapan kod üzerinde uygun şekilde aşağıdaki kodu deneyin

    (BU KOD SON 1 SAAT İŞLEM VERİLERİNİN TAMAMINI LİSTELER)

     WHERE tarih >= NOW() - INTERVAL 1 hour
    

    İLAVE OLARAK Aşağıdaki kodu uygun bir şekilde deneyin

    sutun_adi isimli müşteri/kişi ‘nin kaydı 10’dan fazlaysa getirir

    WHERE COUNT(sutun_adi) > 10
    

    kendi kodlarınıza göre bir deneme yapıp sonucu bildirirseniz sevinirim. Eğer olmuyorsa örnek bir .sql dosyası link atarsanız çözmeye çalışayım

  3. Merhaba Hocam,
    Öncelikle cevabınız için teşekkür ederim. Ben qlik sense üzerinden senaryoyu kurguluyorum. Qlik sense de oracle/PL sql tabanlı olduğu için galiba bilmiyorum interval kodlarda hata veriyor. bende +1/24 ü kullanıyorum.
    saatlerin tutulduğu sütun E2.HIS_ORD_KAYIT_ZAMANI. ben kod hata vermiyecek şekilde aşağıdaki parçayı yazınca hata almıyorum.

    to_timestamp(E2.HIS_ORD_KAYIT_ZAMANI, ‘hh24:mi:ss’) BETWEEN
    to_timestamp(E1.HIS_ORD_KAYIT_ZAMANI,’hh24:mi:ss’) AND
    to_timestamp(E1.HIS_ORD_KAYIT_ZAMANI,’hh24:mi:ss’) + 1/24

    bir müşteriye ait 10 kayıt ar fakat benim sorgum 7 kayıt getiriyor. saat olarak 15:01 de ilk hisse senedi alışını yapmış ve 16:01 e kadar da 10 kuıt var ama benim sorgum 7 kayıt getiriyor. son 2 kaydı getirmiyor. Son 2 kaydın saatleri ise 15:54 ve 15:59.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.