Ü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.
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
;
Kodlarınızdaki verileri göremediğim için kafamda tam canlandıramadım ama birkaç şey söylemek istiyorum belki fikir verir
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)
İLAVE OLARAK Aşağıdaki kodu uygun bir şekilde deneyin
sutun_adi isimli müşteri/kişi ‘nin kaydı 10’dan fazlaysa getirir
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
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.
Qlik sense deneyimim olmadı sizi yanıltmak istemem ama Şuradaki çözümü inceleyebilirsiniz
Hocam merhaba,
Ben paylaşmış olduğunuz kodları deniyorum fakat kod altı kırmızı oluyor.
hangi kod örnek verirseniz ss gönderirseniz bakalım