SQL Medyan Hesaplama
Aritmetik ortalama hesaplama esnasında veri seti içinde özellikle çok büyük veya küçük bir değer varsa sonuç yanıltıcı olabilir. Medyan ise hesap yapılan verilerin içinde hataya neden olan uç veya hatalı değerleri tolere eder ve daha sağlıklı ortalama sonuç verir.
MS SQL de Percentile_Cont fonksiyonu sayesinde Medyan hesaplamak mümkündür. Öncelikle bir veri seti için geçici bir tablo oluşturalım. SQL veri seti aşağıdaki linkte TSQL kodu olarak verilmiştir.
Şehirler SQL Veri Seti Linki burada bulunan sql kopyanıp kullanılabilir.
Oluşturulan tablo aşağıdaki gibidir.
SELECT * FROM #SEHIRLER
PLAKA KODU | TELEFON ALAN KODU | ŞEHİR | BÖLGE | ALAN KM2 | NUFUS | RAKIM | BÜYÜKŞEHİR Mİ |
01 | 322 | ADANA | AKDENİZ BÖLGESİ | 13.844 | 2.237.940 | 25 | BÜYÜKŞEHİR |
02 | 416 | ADIYAMAN | GÜNEYDOĞU BÖLGESİ | 7.337 | 626.465 | 701 | |
03 | 272 | AFYONKARAHİSAR | EGE BÖLGESİ | 14.016 | 729.483 | 1012 | |
04 | 472 | AĞRI | DOĞU ANADOLU BÖLGESİ | 11.099 | 536.199 | 1630 | |
05 | 358 | AMASYA | KARADENİZ BÖLGESİ | 5.628 | 337.800 | 400 | |
06 | 312 | ANKARA | İÇ ANADOLU BÖLGESİ | 25.632 | 5.639.076 | 905 | BÜYÜKŞEHİR |
07 | 242 | ANTALYA | AKDENİZ BÖLGESİ | 20.177 | 2.511.700 | 62 | BÜYÜKŞEHİR |
08 | 466 | ARTVİN | KARADENİZ BÖLGESİ | 7.393 | 170.875 | 530 | |
09 | 256 | AYDIN | EGE BÖLGESİ | 8.116 | 1.110.972 | 92 | BÜYÜKŞEHİR |
10 | 266 | BALIKESİR | MARMARA BÖLGESİ | 14.583 | 1.228.620 | 145 | BÜYÜKŞEHİR |
11 | 228 | BİLECİK | MARMARA BÖLGESİ | 4.179 | 219.427 | 513 | |
12 | 426 | BİNGÖL | DOĞU ANADOLU BÖLGESİ | 8.004 | 279.812 | 1159 | |
13 | 434 | BİTLİS | DOĞU ANADOLU BÖLGESİ | 8.294 | 348.115 | 1637 | |
14 | 374 | BOLU | KARADENİZ BÖLGESİ | 8.313 | 316.126 | 741 | |
15 | 248 | BURDUR | AKDENİZ BÖLGESİ | 7.175 | 270.796 | 963 | |
16 | 224 | BURSA | MARMARA BÖLGESİ | 10.813 | 3.056.120 | 238 | BÜYÜKŞEHİR |
17 | 286 | ÇANAKKALE | MARMARA BÖLGESİ | 9.817 | 542.157 | 11 | |
18 | 376 | ÇANKIRI | İÇ ANADOLU BÖLGESİ | 7.542 | 195.789 | 730 | |
19 | 364 | ÇORUM | KARADENİZ BÖLGESİ | 12.428 | 530.864 | 822 | |
20 | 258 | DENİZLİ | EGE BÖLGESİ | 12.134 | 1.037.208 | 392 | BÜYÜKŞEHİR |
21 | 412 | DİYARBAKIR | GÜNEYDOĞU BÖLGESİ | 15.168 | 1.756.353 | 674 | BÜYÜKŞEHİR |
22 | 284 | EDİRNE | MARMARA BÖLGESİ | 6.145 | 413.903 | 50 | |
23 | 424 | ELAZIĞ | DOĞU ANADOLU BÖLGESİ | 9.383 | 591.098 | 1041 | |
24 | 446 | ERZİNCAN | DOĞU ANADOLU BÖLGESİ | 11.815 | 234.747 | 1216 | |
25 | 442 | ERZURUM | DOĞU ANADOLU BÖLGESİ | 25.006 | 762.062 | 1923 | BÜYÜKŞEHİR |
26 | 222 | ESKİŞEHİR | İÇ ANADOLU BÖLGESİ | 13.960 | 887.475 | 796 | BÜYÜKŞEHİR |
27 | 342 | GAZİANTEP | GÜNEYDOĞU BÖLGESİ | 6.803 | 2.069.364 | 838 | BÜYÜKŞEHİR |
28 | 454 | GİRESUN | KARADENİZ BÖLGESİ | 7.025 | 448.400 | 14 | |
29 | 456 | GÜMÜŞHANE | KARADENİZ BÖLGESİ | 6.668 | 164.521 | 1174 | |
30 | 438 | HAKKARİ | DOĞU ANADOLU BÖLGESİ | 7.095 | 280.991 | 1756 | |
31 | 326 | HATAY | AKDENİZ BÖLGESİ | 5.524 | 1.628.894 | 89 | BÜYÜKŞEHİR |
32 | 246 | ISPARTA | AKDENİZ BÖLGESİ | 8.946 | 444.914 | 1058 | |
33 | 324 | MERSİN | AKDENİZ BÖLGESİ | 16.010 | 1.840.425 | 18 | BÜYÜKŞEHİR |
34 | 212-216 | İSTANBUL | MARMARA BÖLGESİ | 5.461 | 15.519.267 | 25 | BÜYÜKŞEHİR |
35 | 232 | İZMİR | EGE BÖLGESİ | 11.891 | 4.367.251 | 9 | BÜYÜKŞEHİR |
36 | 474 | KARS | DOĞU ANADOLU BÖLGESİ | 10.193 | 285.410 | 1756 | |
37 | 366 | KASTAMONU | KARADENİZ BÖLGESİ | 13.064 | 379.405 | 814 | |
38 | 352 | KAYSERİ | İÇ ANADOLU BÖLGESİ | 16.970 | 1.407.409 | 1060 | BÜYÜKŞEHİR |
39 | 288 | KIRKLARELİ | MARMARA BÖLGESİ | 6.459 | 361.836 | 231 | |
40 | 386 | KIRŞEHİR | İÇ ANADOLU BÖLGESİ | 6.584 | 242.938 | 991 | |
41 | 262 | KOCAELİ | MARMARA BÖLGESİ | 3.397 | 1.953.035 | 4 | BÜYÜKŞEHİR |
42 | 332 | KONYA | İÇ ANADOLU BÖLGESİ | 40.838 | 2.232.374 | 1023 | BÜYÜKŞEHİR |
43 | 274 | KÜTAHYA | EGE BÖLGESİ | 11.634 | 579.257 | 958 | |
44 | 422 | MALATYA | DOĞU ANADOLU BÖLGESİ | 12.259 | 800.165 | 970 | BÜYÜKŞEHİR |
45 | 236 | MANİSA | EGE BÖLGESİ | 13.339 | 1.440.611 | 79 | BÜYÜKŞEHİR |
46 | 344 | KAHRAMANMARAŞ | AKDENİZ BÖLGESİ | 14.520 | 1.154.102 | 562 | BÜYÜKŞEHİR |
47 | 482 | MARDİN | GÜNEYDOĞU BÖLGESİ | 8.780 | 838.778 | 938 | BÜYÜKŞEHİR |
48 | 252 | MUĞLA | EGE BÖLGESİ | 12.654 | 983.142 | 659 | BÜYÜKŞEHİR |
49 | 436 | MUŞ | DOĞU ANADOLU BÖLGESİ | 8.650 | 408.809 | 1334 | |
50 | 384 | NEVŞEHİR | İÇ ANADOLU BÖLGESİ | 5.485 | 303.010 | 1197 | |
51 | 388 | NİĞDE | İÇ ANADOLU BÖLGESİ | 7.234 | 362.861 | 1239 | |
52 | 452 | ORDU | KARADENİZ BÖLGESİ | 5.861 | 754.198 | 25 | BÜYÜKŞEHİR |
53 | 464 | RİZE | KARADENİZ BÖLGESİ | 3.835 | 343.212 | 11 | |
54 | 264 | SAKARYA | MARMARA BÖLGESİ | 4.824 | 1.029.650 | 41 | BÜYÜKŞEHİR |
55 | 362 | SAMSUN | KARADENİZ BÖLGESİ | 9.725 | 1.348.542 | 10 | BÜYÜKŞEHİR |
56 | 484 | SİİRT | GÜNEYDOĞU BÖLGESİ | 5.717 | 330.280 | 887 | |
57 | 368 | SİNOP | KARADENİZ BÖLGESİ | 5.717 | 218.243 | 27 | |
58 | 346 | SİVAS | İÇ ANADOLU BÖLGESİ | 28.164 | 638.956 | 1313 | |
59 | 282 | TEKİRDAĞ | MARMARA BÖLGESİ | 6.190 | 1.055.412 | 28 | BÜYÜKŞEHİR |
60 | 356 | TOKAT | KARADENİZ BÖLGESİ | 10.042 | 612.747 | 630 | |
61 | 462 | TRABZON | KARADENİZ BÖLGESİ | 4.628 | 808.974 | 36 | BÜYÜKŞEHİR |
62 | 428 | TUNCELİ | DOĞU ANADOLU BÖLGESİ | 7.582 | 84.660 | 922 | |
63 | 414 | ŞANLIURFA | GÜNEYDOĞU BÖLGESİ | 19.242 | 2.073.614 | 527 | BÜYÜKŞEHİR |
64 | 276 | UŞAK | EGE BÖLGESİ | 5.555 | 370.509 | 915 | |
65 | 432 | VAN | DOĞU ANADOLU BÖLGESİ | 20.921 | 1.136.757 | 1728 | BÜYÜKŞEHİR |
66 | 354 | YOZGAT | İÇ ANADOLU BÖLGESİ | 13.690 | 421.200 | 1317 | |
67 | 372 | ZONGULDAK | KARADENİZ BÖLGESİ | 3.342 | 596.053 | 10 | |
68 | 382 | AKSARAY | İÇ ANADOLU BÖLGESİ | 7.659 | 416.367 | 1228 | |
69 | 458 | BAYBURT | KARADENİZ BÖLGESİ | 3.746 | 84.843 | 1555 | |
70 | 338 | KARAMAN | İÇ ANADOLU BÖLGESİ | 8.678 | 253.279 | 1063 | |
71 | 318 | KIRIKKALE | İÇ ANADOLU BÖLGESİ | 4.791 | 283.017 | 746 | |
72 | 488 | BATMAN | GÜNEYDOĞU BÖLGESİ | 4.477 | 608.659 | 570 | |
73 | 486 | ŞIRNAK | GÜNEYDOĞU BÖLGESİ | 7.078 | 529.615 | 1343 | |
74 | 378 | BARTIN | KARADENİZ BÖLGESİ | 2.330 | 198.249 | 12 | |
75 | 478 | ARDAHAN | DOĞU ANADOLU BÖLGESİ | 4.934 | 97.319 | 1799 | |
76 | 476 | IĞDIR | DOĞU ANADOLU BÖLGESİ | 3.664 | 199.442 | 860 | |
77 | 226 | YALOVA | MARMARA BÖLGESİ | 798 | 270.976 | 8 | |
78 | 370 | KARABÜK | KARADENİZ BÖLGESİ | 4.142 | 248.458 | 264 | |
79 | 348 | KİLİS | GÜNEYDOĞU BÖLGESİ | 1.412 | 142.490 | 660 | |
80 | 328 | OSMANİYE | AKDENİZ BÖLGESİ | 3.320 | 538.759 | 121 | |
81 | 380 | DÜZCE | KARADENİZ BÖLGESİ | 2.492 | 392.166 | 149 |
Bölgelere göre rakımların medyanını hesaplayan T-SQL sorgusu:
SELECT BOLGE,MEDYAN
FROM
(SELECT BOLGE,PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY RAKIM) OVER (PARTITION BY BOLGE) AS MEDYAN
FROM #SEHIRLER) AS A1
GROUP BY BOLGE,MEDYAN
ORDER BY BOLGE
BOLGE | MEDYAN |
AKDENİZ BÖLGESİ | 105 |
DOĞU ANADOLU BÖLGESİ | 1482 |
EGE BÖLGESİ | 525,5 |
GÜNEYDOĞU BÖLGESİ | 701 |
İÇ ANADOLU BÖLGESİ | 1060 |
KARADENİZ BÖLGESİ | 206,5 |
MARMARA BÖLGESİ | 41 |