Sobes.tech
Middle — Senior

Hoe bereken je de mediaan in SQL zonder ingebouwde functie? Hoe tel je het aantal rijen in een tabel? Ken je window functies?

sobes.tech AI

Antwoord van AI

Mediaan in SQL zonder ingebouwde functie kan worden berekend met behulp van window functies of subqueries. Bijvoorbeeld, voor een tabel met een numerieke kolom 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);

Hier:

  • ROW_NUMBER() nummer de rijen in oplopende volgorde van waarde.
  • COUNT(*) OVER () telt het totale aantal rijen.
  • Er wordt het gemiddelde genomen van de twee centrale elementen (bij even aantal) of één centraal element (bij oneven aantal).

Aantal rijen in de tabel tellen is heel eenvoudig:

SELECT COUNT(*) FROM your_table;

Window functies zijn functies die berekeningen uitvoeren over een set gerelateerde rijen aan de huidige rij, zonder het resultaat te reduceren tot één rij (in tegenstelling tot aggregatiefuncties). Ze zijn handig voor rangschikken, bewegende sommen, medianen, etc.

Voorbeeld van een window functie:

SELECT value, ROW_NUMBER() OVER (ORDER BY value) AS rn FROM your_table;

Deze nummer de rijen in oplopende volgorde van value.