X

MySQL: contare le occorrenze tra i valori di un campo

Talvolta si fa un uso eccessivo di PHP anche quando basterebbero gli strumenti messi a disposizione dal linguaggio SQL.
Un esempio è quando si vogliono contare le occorrenze di un determinato valore all’interno delle diverse righe di un campo.
Con PHP siamo abituati a creare un contatore ed a stampare la variabile ma possiamo fare tutto con SQL.
Riprendo l’esempio che ho trovato sul web

person vote
obama yes
mccain no
obama yes
obama no
mccain yes
obama yes
obama yes
obama no
mccain no

Il codice SQL che compie il lavoro è

SELECT person,
SUM(IF(vote = "yes", 1,0)) AS `yes_votes`,
SUM(IF(vote = "no", 1,0)) AS `no_votes`,
COUNT(vote) AS `total`
FROM votes
GROUP BY person
ORDER BY yes_votes DESC

Il risultato è

person yes_votes no_votes total
obama 4 2 6
mccain 1 2 3

La parte comoda del codice SQL risiede in quel ..SUM(IF.. che ci evita di creare un loop in PHP a valle della query per il conteggio.

via Random Snippets

Sergio Gandrus: Da febbraio 2024 lavoro come CTO presso Deva Connection Il mio stack è PHP/MySQL/Git/Docker. Lavoro con Agile (Scrum) e utilizzo principalmente AWS come cloud provider. Sono papà e marito. Nel tempo libero mi piace leggere, il buon vino e viaggiare.