Sobes.tech
Middle — Senior

Πώς υπολογίζετε τη διάμεσο σε SQL χωρίς ενσωματωμένη λειτουργία; Πώς μετράτε τον αριθμό των γραμμών σε έναν πίνακα; Γνωρίζετε τις λειτουργίες παραθύρου;

sobes.tech AI

Απάντηση από AI

Μέση τιμή σε SQL χωρίς ενσωματωμένη συνάρτηση μπορεί να υπολογιστεί χρησιμοποιώντας συναρτήσεις παραθύρου ή υποερωτήματα. Για παράδειγμα, για έναν πίνακα με αριθμητική στήλη 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);

Εδώ:

  • ROW_NUMBER() αριθμεί τις γραμμές σε αύξουσα σειρά τιμής.
  • COUNT(*) OVER () μετρά το συνολικό αριθμό γραμμών.
  • Υπολογίζεται ο μέσος όρος των δύο κεντρικών στοιχείων (για ζυγό αριθμό) ή ενός κεντρικού (για μονό αριθμό).

Αριθμός γραμμών στον πίνακα είναι πολύ απλό:

SELECT COUNT(*) FROM your_table;

Συναρτήσεις παραθύρου είναι συναρτήσεις που πραγματοποιούν υπολογισμούς σε ένα σύνολο σχετικών γραμμών με την τρέχουσα γραμμή, χωρίς να μειώνουν το αποτέλεσμα σε μία γραμμή (σε αντίθεση με τις συναρτήσεις σύνοψης). Είναι χρήσιμες για κατάταξη, κινητά αθροίσματα, μεσαίες τιμές κ.ά.

Παράδειγμα συνάρτησης παραθύρου:

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

Αυτή θα αριθμήσει τις γραμμές σε αύξουσα σειρά με βάση το value.