Popular Post

Archive for Şubat 2015

UNION ve UNION ALL

By : Murat PINAR
Özet olarak:
  • UNION ALL bütün kayıtları herhangi bir filtreleme yapmadan getirir
  • UNION ise, UNION ALL ile gelen bütün kayıtları bir tablo olarak düşünürsek, bu tablo üzerinde DISTINCT ile bir select alıyormuşuz gibi sonuç getirmektedir.
  • Ayrımı yapmak için ALL ifadesini “ALL = Bütün kayıtlar” olarak aklımızda tutabiliriz belki karıştırmamak adına 
Tag : , ,

Döngüler

By : Murat PINAR
BEGIN
DECLARE DEG VARCHAR(20);
BEGIN
  DEG:=TO_CHAR(SYSDATE,'DAY');

  IF DEG IN('SUNDAY','SATURDAY') THEN
    DBMS_OUTPUT.PUT_LINE('HAFTA SONU');
  ELSIF DEG='MONDAY' THEN DBMS_OUTPUT.PUT_LINE('HAFTA BAŞI');
  ELSE DBMS_OUTPUT.PUT_LINE('HAFTA ICI LYANN');
  END IF;
  END;


 -----------------------
 DECLARE GUN VARCHAR(20);
 BEGIN
      GUN:=TO_CHAR(SYSDATE,'DAY');
 
    CASE GUN WHEN 'SUNDAY' THEN DBMS_OUTPUT.PUT_LINE('YOKUM');
             WHEN 'SATURDAY' THEN DBMS_OUTPUT.PUT_LINE('YOKUM2');
             WHEN 'MONDAY' THEN DBMS_OUTPUT.put_line('GEL');
         ELSE DBMS_OUTPUT.put_line('NEY NEY NEY');
     END CASE;
 END;

-----------------------
 DECLARE
SAY NUMBER(2):=1;
BEGIN
  LOOP
    EXIT WHEN SAY>=10;
    DBMS_OUTPUT.put_line('DEGER: '||SAY);
    SAY:=SAY+1;
    END LOOP;
END;
-----------------------
DECLARE
DEG NUMBER(2):=1;
BEGIN
  WHILE DEG<=9 LOOP
   DBMS_OUTPUT.PUT_LINE('SAYI: '||DEG);
      DEG:=DEG+1;
  END LOOP;
END;
-----------------------
DECLARE
SAY NUMBER(2);
BEGIN
  FOR say IN REVERSE 1..10
    LOOP
      DBMS_OUTPUT.PUT_LINE('RAKAM: '||SAY);
    END LOOP;
 END;
Tag : , ,

KEEP_DENSE_RANK_OVER

By : Murat PINAR
SELECT K.NO,
       K.CINS,
       K.TC,
       K.ISIM,
       K.DYER,
       FLOOR(MONTHS_BETWEEN(SYSDATE, K.DOGUMTARIHI) / 12) AS YAS,
       RANK() OVER(PARTITION BY K.DYER, K.CINS ORDER BY FLOOR(MONTHS_BETWEEN(SYSDATE, K.DOGUMTARIHI) / 12)) AS SAY, //ATLAR
       DENSE_RANK() OVER(PARTITION BY K.DYER, K.CINS ORDER BY FLOOR(MONTHS_BETWEEN(SYSDATE, K.DOGUMTARIHI) / 12)) AS SAY2, //KALDIĞI YERDEN
       MIN(FLOOR(MONTHS_BETWEEN(SYSDATE, K.DOGUMTARIHI) / 12)) KEEP(DENSE_RANK FIRST ORDER BY FLOOR(MONTHS_BETWEEN(SYSDATE, K.DOGUMTARIHI) / 12)) OVER(PARTITION BY K.DYER) AS MIN,
       MAX(FN_YAS(K.DOGUMTARIHI)) KEEP(DENSE_RANK LAST ORDER BY FN_YAS(K.DOGUMTARIHI)) OVER(PARTITION BY K.DYER) AS MAX
  FROM KART K
 WHERE K.DYER = 'MERSİN'
--AND ROWNUM<10 comment-10--="">

Tag : , ,

Copyright © Murat PINAR - Modified By - Designed by