Sobes.tech
Middle

Για ποιο λόγο χρησιμοποιούνται οι συναρτήσεις παραθύρου σε SQL;

sobes.tech AI

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

Οι συναρτήσεις παραθύρου σε SQL πραγματοποιούν συγκεντρώσεις δεδομένων σε ένα σύνολο γραμμών που σχετίζονται με την τρέχουσα γραμμή, αλλά δεν ομαδοποιούν το σύνολο αποτελεσμάτων. Αυτό επιτρέπει την εκτέλεση υπολογισμών όπως συσσωρευμένες αθροίσεις, κινούμενα μέσα ή κατάταξη, διατηρώντας όλες τις γραμμές του αρχικού ερωτήματος.

Οι κύριοι στόχοι της χρήσης συναρτήσεων παραθύρου:

  • Κατάταξη: Ανάθεση κατάταξης σε κάθε γραμμή σε ένα καθορισμένο παράθυρο.
    -- Λαμβάνουμε την κατάταξη των υπαλλήλων βάσει μισθού εντός κάθε τμήματος
    SELECT
        employee_name,
        salary,
        department,
        RANK() OVER (PARTITION BY department ORDER BY salary DESC) as department_rank
    FROM
        employees;
    
  • Υπολογισμός στατιστικών ανά ομάδα γραμμών χωρίς ομαδοποίηση: Συγκέντρωση δεδομένων εντός "παραθύρου" γραμμών, διατηρώντας την λεπτομέρεια σε επίπεδο γραμμής.
    -- Υπολογίζουμε τον μέσο μισθό για ολόκληρο το τμήμα για κάθε γραμμή
    SELECT
        employee_name,
        salary,
        department,
        AVG(salary) OVER (PARTITION BY department) as avg_department_salary
    FROM
        employees;
    
  • Σύγκριση της τρέχουσας γραμμής με άλλες γραμμές στο παράθυρο: Πρόσβαση σε δεδομένα από προηγούμενες ή επόμενες γραμμές στο παράθυρο.
    -- Λαμβάνουμε τον μισθό του προηγούμενου υπαλλήλου στο τμήμα σε φθίνουσα σειρά μισθού
    SELECT
        employee_name,
        salary,
        department,
        LAG(salary, 1, 0) OVER (PARTITION BY department ORDER BY salary DESC) as previous_salary
    FROM
        employees;
    
  • Υπολογισμοί με συσσωρευτικό άθροισμα: Υπολογισμός αθροισμάτων, μέσων και άλλων συγκεντρώσεων σε αυξανόμενη συσσωρευτική μορφή.
    -- Υπολογίζουμε το συσσωρευτικό άθροισμα πωλήσεων ανά ημερομηνία
    SELECT
        sale_date,
        amount,
        SUM(amount) OVER (ORDER BY sale_date) as cumulative_sales
    FROM
        sales;
    

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