Karmaşık hesaplamalar oluşturma

SQL ile Raporlama

Tyler Pernes

Learning & Development Consultant

Yaklaşımlar

  1. Pencere fonksiyonları
  2. Katmanlı hesaplamalar
SQL ile Raporlama

Pencere fonksiyonları

  • Tablodaki diğer satırlara başvurur.
SQL ile Raporlama

Pencere fonksiyonları

  • Tablodaki diğer satırlara başvurur.

SQL ile Raporlama

Pencere fonksiyonları

  • Tablodaki diğer satırlara başvurur.

SQL ile Raporlama

Pencere fonksiyonu söz dizimi

SUM(value) OVER (PARTITION BY field ORDER BY field)

SQL ile Raporlama

Pencere fonksiyonu söz dizimi

SUM(value) OVER (PARTITION BY field ORDER BY field)

SQL ile Raporlama

Pencere fonksiyonu söz dizimi

SUM(value) OVER (PARTITION BY field ORDER BY field)

  • PARTITION BY = hesaplama aralığı
  • ORDER BY = hesaplama çalışırken satır sırası
SQL ile Raporlama

Pencere fonksiyonu örnekleri

Toplam bronz madalya

SELECT 
    country_id, 
    athlete_id, 
    SUM(bronze) OVER () AS total_bronze
FROM summer_games;
+-------------+-------------+---------------+
| country_id  | athlete_id  | total_bronze  |
|-------------|-------------|---------------|
| 11          | 77505       | 141           |
| 11          | 11673       | 141           |
| 14          | 85554       | 141           |
| 14          | 76433       | 141           |
+-------------+-------------+---------------+
SQL ile Raporlama

Pencere fonksiyonu örnekleri

Ülke bronz madalyaları

SELECT 
    country_id, 
    athlete_id, 
    SUM(bronze) OVER (PARTITION BY country_id) AS total_bronze
FROM summer_games
+-------------+-------------+---------------+
| country_id  | athlete_id  | total_bronze  |
|-------------|-------------|---------------|
| 11          | 77505       | 12            |
| 11          | 11673       | 12            |
| 14          | 85554       | 5             |
| 14          | 76433       | 5             |
+-------------+-------------+---------------+
SQL ile Raporlama

Pencere fonksiyonu türleri

  • SUM()
  • AVG()
  • MIN()
  • MAX()
SQL ile Raporlama

Pencere fonksiyonu türleri

  • LAG() ve LEAD()

SQL ile Raporlama

Pencere fonksiyonu türleri

  • LAG() ve LEAD()

SQL ile Raporlama

Pencere fonksiyonu türleri

  • ROW_NUMBER() ve RANK()

SQL ile Raporlama

Bir toplam üzerinde pencere fonksiyonu

original_table
+----------+-----------+---------+ 
| team_id  | player_id | points  |
|----------|-----------|---------|    
| 1        | 4123      | 3       |
| 1        | 5231      | 6       |
| 2        | 8271      | 5       |
+----------+-----------+---------+
desired_report
+----------+-------------+---------------+ 
| team_id  | team_points | league_points |
|----------|-------------|---------------|    
| 1        | 9           | 43            |
| 2        | 12          | 43            |
| 3        | 22          | 43            |
+----------+-------------+---------------+
SQL ile Raporlama

Bir toplam üzerinde pencere fonksiyonu

Nihai sorgu

SELECT
    team_id,
    SUM(points) AS team_points,
    SUM(SUM(points)) OVER () AS league_points
FROM original_table
GROUP BY team_id;
SQL ile Raporlama

Bir toplam üzerinde pencere fonksiyonu

SELECT
    team_id,
    SUM(points) AS team_points,
    SUM(points) OVER () AS league_points
FROM original_table
GROUP BY team_id;
ERROR: points must be an aggregation or appear in a GROUP BY statement.
SQL ile Raporlama

Katmanlı hesaplamalar

  • Mevcut bir toplamı yeniden toplama
  • Bir alt sorgudan yararlanır
SQL ile Raporlama

Katmanlı hesaplama örneği

Adım 1: Ülke başına toplam bronz madalya

SELECT country_id, SUM(bronze) as bronze_medals
FROM summer_games
GROUP BY country_id;

Adım 2: Alt sorguya çevirin ve en büyüğünü alın

SELECT MAX(bronze_medals)
FROM
  (SELECT country_id, SUM(bronze) as bronze_medals
  FROM summer_games
  GROUP BY country_id) AS subquery;
SQL ile Raporlama

Karmaşık hesaplamaları planlama

SQL ile Raporlama

Karmaşık hesaplamaları planlama

  • Pencere fonksiyonu için sıralama?
  • Katmanlı hesaplamayla iki toplama?
SQL ile Raporlama

Vamos praticar!

SQL ile Raporlama

Preparing Video For Download...