Συναρτήσεις συγκεντρωτικών συμβολοσειρών SQL

Synarteseis Synkentrotikon Symboloseiron Sql



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

Ένα παράδειγμα περιλαμβάνει συναρτήσεις όπως SUM(), AVG(), COUNT(), MAX και MIN(). Ωστόσο, ένα πράγμα που θα παρατηρήσετε σχετικά με τις συγκεντρωτικές συναρτήσεις στην SQL είναι ότι είναι προσανατολισμένες σε αριθμητικές πράξεις.

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







ΣΗΜΕΙΩΣΗ: Είναι καλή σημείωση ότι οι περισσότερες από τις συναρτήσεις που συζητούνται σε αυτήν την ανάρτηση δεν αποτελούν μέρος της τυπικής SQL. Ως αποτέλεσμα, αποτελούν επέκταση διαφόρων μηχανών βάσης δεδομένων όπως PostgreSQL, SQL Server κ.λπ.



Τι είναι οι συναρτήσεις συγκεντρωτικών συμβολοσειρών;

Οι συναρτήσεις συγκεντρωτικών συμβολοσειρών είναι ένα σύνολο συναρτήσεων που εκτελούν τις λειτουργίες συγκέντρωσης σε ένα σύνολο συμβολοσειρών μέσα σε μια ομάδα ή σειρές και επιστρέφουν ένα μόνο αποτέλεσμα.



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





Μερικές κοινές συναρτήσεις συγκεντρωτικών συμβολοσειρών περιλαμβάνουν:

  • GROUP_CONCAT() – PostgreSQL και MySQL
  • STRING_AGG – SQL Server
  • ARRAY_AGG – PostgreSQL
  • LISTAGG – Oracle

Ας εξερευνήσουμε κάθε λειτουργία και τι παρέχει.



GROUP_CONCAT()

Η συνάρτηση GROUP_CONCAT() υποστηρίζεται από βάσεις δεδομένων PostgreSQL και MySQL. Μας επιτρέπει να συνενώσουμε τις τιμές από πολλές σειρές σε μια ενιαία συμβολοσειρά.

Ας υποθέσουμε ότι έχουμε έναν πίνακα 'υπάλληλοι' ως εξής:

ΔΗΜΙΟΥΡΓΗΣΤΕ ΤΡΑΠΕΖΑ υπαλλήλους (
υπάλληλος_αναγνωριστικό INT AUTO_INCREMENT ΚΥΡΙΟ ΚΛΕΙΔΙ,
first_name VARCHAR(50),
επώνυμο VARCHAR(50),
τμήμα ΒΑΡΧΑΡ(50)
)

ΕΙΣΑΓΩΓΗ ΣΕ υπαλλήλους (όνομα, επώνυμο, τμήμα) ΑΞΙΕΣ
('Alice', 'Smith', 'Human Resources'),
('Bob', 'Johnson', 'Marketing'),
('Charlie', 'Wilson', 'Finance'),
('David', 'Brown', 'Sales'),
('Eva', 'Davis', 'Engineering');

Παραγωγή:

Εάν θέλουμε να προσδιορίσουμε το πλήρες όνομα του υπαλλήλου παίρνοντας το όνομα και συνδυάζοντας το επώνυμο, μπορούμε να χρησιμοποιήσουμε τη συνάρτηση GROUP_CONCAT() όπως φαίνεται στο ακόλουθο παράδειγμα:

ΕΠΙΛΕΓΩ
τμήμα,
GROUP_CONCAT(first_name, ' ', last_name) AS full_name
ΑΠΟ
υπαλλήλους
ΟΜΑΔΑ ΑΠΟ
τμήμα;

Σε αυτήν την περίπτωση, χρησιμοποιούμε τη συνάρτηση για να συνδέσουμε τις συμβολοσειρές από τις στήλες 'first_name' και 'last_name' και μια κενή συμβολοσειρά για να προσθέσουμε ένα κενό στα ονόματα.

Αυτό περιέχει μια λίστα εργαζομένων σε κάθε τμήμα.

STRING_AGG

Αυτή η συνάρτηση είναι παρόμοια με τη συνάρτηση GROUP_CONCAT() αλλά υποστηρίζεται μόνο στη βάση δεδομένων του SQL Server.

Ένα παράδειγμα χρήσης είναι το εξής:

ΕΠΙΛΕΓΩ
τμήμα,
STRING_AGG(first_name, last_name, ' ') AS full_name
ΑΠΟ
υπαλλήλους
ΟΜΑΔΑ ΑΠΟ
τμήμα;

Αυτό εκτελεί τη συνένωση συμβολοσειρών στις καθορισμένες στήλες ως το διάστημα ως οριοθέτη.

ARRAY_AGG

Η συνάρτηση ARRAY_AGG είναι διαθέσιμη μόνο στη βάση δεδομένων PostgreSQL. Μας επιτρέπει να συγκεντρώνουμε τις τιμές σε έναν ενιαίο πίνακα.

Ένα παράδειγμα είναι το εξής:

ΕΠΙΛΕΓΩ
τμήμα,
Λίστα υπαλλήλων ARRAY_AGG(first_name) AS
ΑΠΟ
υπαλλήλους
ΟΜΑΔΑ ΑΠΟ
τμήμα;

Αυτό θα πρέπει να συγκεντρώνει το όνομα του υπαλλήλου ως πίνακα.

LISTAGG()

Η συνάρτηση LISTAGG() είναι διαθέσιμη μόνο στη βάση δεδομένων της Oracle. Μας επιτρέπει να συνδέσουμε τις τιμές σε μια ενιαία συμβολοσειρά με έναν καθορισμένο οριοθέτη.

Ένα παράδειγμα είναι το εξής:

ΕΠΙΛΟΓΗ τμήματος, LISTAGG(first_name, last_name,  ' ') ΕΝΤΟΣ ΟΜΑΔΑΣ (ΠΑΡΑΓΓΕΛΙΑ ΑΠΟ υπαλλήλου_όνομα ASC) ΩΣ υπάλληλοι
ΑΠΟ εργαζομένους
ΟΜΑΔΑ ΑΝΑ τμήμα;

Αυτό συνδυάζει τα ονόματα των υπαλλήλων και τον καθορισμένο οριοθέτη.

συμπέρασμα

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