Middle — Senior
Kā aprēķināt mediānu SQL bez iebūvētas funkcijas? Kā saskaitīt rindu skaitu tabulā? Vai zināt logu funkcijas?
sobes.tech AI
Atbilde no AI
Vidējā vērtība SQL bez iebūvētas funkcijas var tikt aprēķināta, izmantojot logu funkcijas vai apakšvaicājumus. Piemēram, tabulā ar skaitlisku kolonnu value:
SELECT AVG(value) AS median FROM (
SELECT value, ROW_NUMBER() OVER (ORDER BY value) AS rn, COUNT(*) OVER () AS cnt
FROM your_table
) sub
WHERE rn IN ((cnt + 1) / 2, (cnt + 2) / 2);
Šeit:
ROW_NUMBER()numurē rindas pēc pieaugošās vērtības.COUNT(*) OVER ()skaita kopējo rindu skaitu.- Aprēķina vidējo no diviem centrālajiem elementiem (pāru skaitā) vai vienu centrālo (nepāru skaitā).
Rindu skaita skaitīšana tabulā ir ļoti vienkārša:
SELECT COUNT(*) FROM your_table;
Logu funkcijas ir funkcijas, kas veic aprēķinus, izmantojot saistītas rindas ar pašreizējo rindu, nesamazinot rezultātu uz vienu rindu (atšķirībā no agregācijas funkcijām). Tās ir noderīgas rangu, kustīgo summu, mediānu u.c. aprēķiniem.
Piemērs logu funkcijai:
SELECT value, ROW_NUMBER() OVER (ORDER BY value) AS rn FROM your_table;
Tā numurē rindas pēc pieaugošās vērtības.