Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

pb avec COUNT et GROUP BY

3 réponses
Avatar
Yves_Guyane
Bonjour,
ma requete :
"SELECT date_repas,COUNT(*) FROM client WHERE plat_choisi='viande' GROUP
BY date_repas"
renvoie (par exemple)

2005-02-01 3
2005-02-02 4
2005-02-04 1
2005-02-06 5
2005-02-07 6

et ne renvoie pas
2005-02-03 0
2005-02-05 0
dates qui contiennent des enregistrements (par exemple poisson)
Comment écrire la requete pour obtenir la liste de toutes les dates
existantes en incluant les dates avec 0 viande choisie ?

Merci

3 réponses

Avatar
Jacques Caron
Salut,

On Wed, 22 Feb 2006 22:59:20 +0100, Yves_Guyane wrote:

"SELECT date_repas,COUNT(*) FROM client WHERE plat_choisi='viande' GROUP
BY date_repas"
renvoie (par exemple)

2005-02-01 3
2005-02-02 4
2005-02-04 1
2005-02-06 5
2005-02-07 6

et ne renvoie pas
2005-02-03 0
2005-02-05 0
dates qui contiennent des enregistrements (par exemple poisson)
Comment écrire la requete pour obtenir la liste de toutes les dates
existantes en incluant les dates avec 0 viande choisie ?



SELECT date_repas,SUM(CASE WHEN plat_choisi='viande' THEN 1 ELSE 0 END)
GROUP BY date_repas

ou

SELECT date_repas,COUNT(CASE WHEN plat_choisi='viande' THEN 1 ELSE NULL
END) GROUP BY date_repas

devraient faire l'affaire (non testé).

Jacques.
--
Oxado http://www.oxado.com/
Avatar
gg
Yves_Guyane a écrit :
Bonjour,
ma requete :
"SELECT date_repas,COUNT(*) FROM client WHERE plat_choisi='viande' GROUP
BY date_repas"
renvoie (par exemple)

2005-02-01 3
2005-02-02 4
2005-02-04 1
2005-02-06 5
2005-02-07 6

et ne renvoie pas
2005-02-03 0
2005-02-05 0
dates qui contiennent des enregistrements (par exemple poisson)
Comment écrire la requete pour obtenir la liste de toutes les dates
existantes en incluant les dates avec 0 viande choisie ?

Merci





Avec MySQL, ce pourrait etre quelque chose du genre (tu n'as rien précisé)

select
date_repas,
sum(if(plat_choisi='viande',1,0))
from
client
group by
date_repas

Cordialement,

gg
Avatar
Fred Brouard - SQLpro
Bonjour

CASE fait partie de la norme SQL. IF n'existe pas dans la norme SQL.
Lisez l'article que j'ai écrit à ce sujet :
http://sqlpro.developpez.com/cours/sqlaz/select/#L7

A +

Yves_Guyane a écrit:
Merci à tous les deux, le resultat est conforme à mon besoin et m'ouvre
des perspectives très interessantes car je ne savais pas que MySQL
autorisait les IF ou les CASE à l'intérieur d'un SUM ou COUNT.
Question subsidiaire : depuis toujours (ie c'est du SQL standard) ou
depuis des versions récentes ?

Yves



--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************