7 Aralık 2018 Cuma

CASE...WHEN

Giriş
Sözdizimi şöyle
CASE WHEN Sütun=Değer THEN YeniDeğer END
Örnek
Açıklaması şöyle
You see in the CASE statement below, we’re categorizing users based on if they are paying customers or not. We then apply a sum() since it’s a quick way to count the number of paying customers vs non-paying customers in one simple query. If we did not have the CASE statement, it would take us two queries to find both numbers.
Şöyle yaparız
SELECT 
  date, 
  SUM(
    CASE WHEN paying_customer = 'yes' THEN downloads END
  ) AS paying, 
  SUM(
    CASE WHEN paying_customer = 'no' THEN downloads END
  ) AS non_paying 
FROM 
  ms_user_dimension a
Örnek
Şöyle yaparız.
SELECT top, nd, 
       CASE WHEN top = 1 THEN 'T' 
            WHEN nd = 1 THEN 'N'
       END AS topnd
FROM table1
Çıktı olarak şunu alırız.
top     nd  topnd
1       0   T
0       1   N
0       1   N
1       1   T
Örnek
Şöyle yaparız.
select (case when col0 = 'a' then 1 end) as alarm_ID, 
       (case when col0 = 'c' then 1 end) as CCTV_ID, 
       q.last_maintenance_date as Date 
from ...;

4 Aralık 2018 Salı

CTID Sistem Sütunu

Giriş
Bu sütun her tabloda vardır. Oracle'daki ROWID gibidir. Bu sayı sabit değildir ve vacuum gibi işlemler sonunda değişebilir. Açıklaması şöyle.
Rowid and ctid are physical row/tuple identifiers => can change after rebuild/vacuum.
Örnek
Şöyle yaparız.
SELECT MAX(CTID) FROM YOUR_TABLE;

3 Aralık 2018 Pazartesi

PG_LARGEOBJECT Sistem Tablosu

Giriş
Bu tablo veriyi 2 KB'lik satırlara böler. Tabloda 3 sütun var.
1.loid
2.pageno
3.data

Bu tablodaki oprhan satırları silmek için vacuumlo komutu kullanılabilir.

Açıklaması şöyle. Yani TOAST binary veri için değil de TEXT gibi verile için kullanılıyor
TOAST is a built-in mechanism for efficiently handling large values within regular tables, primarily for variable-length data types, whereas pg_largeobject is a separate system table designed specifically for managing large binary objects like images or audio files. 

Örnek
psql komutunu kullanarak şöyle yaparız. lo_export metoduna loid değerini veririz
"C:\Program Files\PostgreSQL\9.0\bin\psql.exe" -h 192.168.1.101 -p 5432 -d mDB
 -U mYadmin -c  "\lo_export 19135 'C://leeImage.jpeg' "



TRUNCATE

Giriş
Şöyle yaparız
TRUNCATE Tabloİsmi CASCADE;