Giriş

PostgreSQL Özet İstatistikler ve Pencere Fonksiyonları

Michel Semaan

Data Scientist

Motivasyon

2004’ten beri ABD Yaz Olimpiyatları altın madalya toplamı ve kümülatif toplam

| Year | Medals | Medals_RT |
|------|--------|-----------|
| 2004 | 116    | 116       |
| 2008 | 125    | 241       |
| 2012 | 147    | 388       |

Disk atma son şampiyonluk durumu

| Year | Champion | Last_Champion | Reigning_Champion |
|------|----------|---------------|-------------------|
| 1996 | GER      | null          | false             |
| 2000 | LTU      | GER           | false             |
| 2004 | LTU      | LTU           | true              |
| 2008 | EST      | LTU           | false             |
| 2012 | GER      | EST           | false             |
PostgreSQL Özet İstatistikler ve Pencere Fonksiyonları

Ders planı

  1. Pencere fonksiyonlarına giriş
  2. Getirme, sıralama ve sayfalama
  3. Toplamsal pencere fonksiyonları ve çerçeveler
  4. Pencere fonksiyonlarının ötesi
PostgreSQL Özet İstatistikler ve Pencere Fonksiyonları

Yaz Olimpiyatları veri seti

  • Her satır Yaz Olimpiyatları’nda verilen bir madalyayı temsil eder

Sütunlar

  • Year, City
  • Sport, Discipline, Event
  • Athlete, Country, Gender
  • Medal
PostgreSQL Özet İstatistikler ve Pencere Fonksiyonları

Pencere fonksiyonları

  • Geçerli satırla ilişkili bir satır kümesi üzerinde işlem yapar
  • GROUP BY toplama fonksiyonlarına benzer, ancak tüm satırlar çıktıda kalır

Kullanımlar

  • Önceki veya sonraki satırdan değer getirme (ör. bir önceki satırın değeri)
    • Son şampiyonluk durumunu belirleme
    • Zaman içindeki artışı hesaplama
  • Sıralı dereceler atama (1., 2., vb.)
  • Kümülatif toplamlar, hareketli ortalamalar
PostgreSQL Özet İstatistikler ve Pencere Fonksiyonları

Satır numaraları

Sorgu

SELECT
  Year, Event, Country
FROM Summer_Medals
WHERE
  Medal = 'Gold';

Sonuç

| Year | Event                      | Country |
|------|----------------------------|---------|
| 1896 | 100M Freestyle             | HUN     |
| 1896 | 100M Freestyle For Sailors | GRE     |
| 1896 | 1200M Freestyle            | HUN     |
| ...  | ...                        | ...     |
PostgreSQL Özet İstatistikler ve Pencere Fonksiyonları

ROW_NUMBER’a giriş

Sorgu

SELECT
  Year, Event, Country,
  ROW_NUMBER() OVER () AS Row_N
FROM Summer_Medals
WHERE
  Medal = 'Gold';

Sonuç

| Year | Event                      | Country | Row_N |
|------|----------------------------|---------|-------|
| 1896 | 100M Freestyle             | HUN     | 1     |
| 1896 | 100M Freestyle For Sailors | GRE     | 2     |
| 1896 | 1200M Freestyle            | HUN     | 3     |
| ...  | ...                        | ...     | ...   |
PostgreSQL Özet İstatistikler ve Pencere Fonksiyonları

Pencere fonksiyonunun yapısı

Sorgu

SELECT
  Year, Event, Country,
  ROW_NUMBER() OVER () AS Row_N
FROM Summer_Medals
WHERE
  Medal = 'Gold';
  • FUNCTION_NAME() OVER (...)
    • ORDER BY
    • PARTITION BY
    • ROWS/RANGE PRECEDING/FOLLOWING/UNBOUNDED
PostgreSQL Özet İstatistikler ve Pencere Fonksiyonları

Haydi pratik yapalım!

PostgreSQL Özet İstatistikler ve Pencere Fonksiyonları

Preparing Video For Download...