Je ne sais pas si c'est un problème compliqué ou si je manque quelque chose de trivial, mais je n'arrive pas à le comprendre.MySQL - Utilise MAX() sur une colonne et retourne aussi des données du reste de la rangée?
J'ai un tableau qui répertorie les messages d'erreur et le moment où ils sont apparus:
id created_at content
1 2017-08-05 08:00 ...
2 2017-08-15 16:00 ...
3 2017-08-15 16:01 ...
4 2017-08-15 16:02 ...
5 2017-08-25 16:00 ...
groupe
I ces lignes ainsi que d'après la date et l'heure et compter combien d'erreurs sont apparues:
SELECT DATE_FORMAT(created_at, '%d.%m. %h'),
COUNT(*) AS errorCount
FROM db.errorData
GROUP BY DAY(created_at), HOUR(created_at);
Résultant en ceci:
created_at errorCount
2017-08-05 08 1
2017-08-15 16 3
2017-08-25 16 1
maintenant, je veux utiliser MAX()
t o obtenir le plus haut errorCount. Je le fais avec une sous-sélection:
SELECT MAX(errorCount) AS errorMax
FROM(
SELECT DATE_FORMAT(created_at, '%d.%m. %h'),
COUNT(*) AS errorCount
FROM db.errorData
GROUP BY DAY(created_at), HOUR(created_at)
) alias;
Cependant, je veux aussi la date de la journée avec le plus d'erreurs. Ajouter simplement created_at
au premier SELECT ne fonctionne pas car il ne renvoie que la valeur de la première ligne.
Je ne sais pas comment faire ce travail maintenant. Peux-tu m'aider?
S'il existe plus d'un jour avec le plus d'erreurs, alors comment voulez-vous les résultats? –