Comment trouver le maximum d'avg
J'essaie d'afficher le salaire moyen maximum; toutefois, je n'arrive pas à le faire fonctionner.
Je peux obtenir une liste de la moyenne des salaires pour les afficher avec:
select worker_id, avg(salary)
from workers
group by worker_id;
Cependant, lorsque j'essaie d'afficher une liste du salaire moyen maximum avec:
select max (avg(salary))
from (select worker_id, avg(salary)
from workers
group by worker_id);
il ne fonctionne pas. Je reçois un "identifiant invalide erreur". Comment puis-je utiliser la moyenne du salaire de chaque travailleur à trouver le maximum de la moyenne pour chaque travailleur?
Grâce.
Je m'attends à une colonne appelée WORKER_ID à la clé primaire d'une table appelé les TRAVAILLEURS. Si oui, AVG() salaire serait la moyenne pour l'ensemble de la table, et le MAX(AVG()) salaire serait juste l'AVG() de salaire. Cependant, je soupçonne que c'est juste un shonky modèle de données.
Une autre possibilité est que la clé de la table est une combinaison de worker_id et de la date - si oui, une moyenne pondérée par le nombre de jours peut être plus utile qu'une simple moyenne arithmétique.
Une autre possibilité est que la clé de la table est une combinaison de worker_id et de la date - si oui, une moyenne pondérée par le nombre de jours peut être plus utile qu'une simple moyenne arithmétique.
OriginalL'auteur bqui56 | 2011-11-08
Vous devez vous connecter pour publier un commentaire.
Colonnes résultant de fonctions d'agrégation (par exemple, avg) généralement obtenir arbitraire des noms. Suffit d'utiliser un alias pour elle, et sélectionnez:
OriginalL'auteur king_nak
Cette affiche la moyenne la plus élevée avec un travailleur id
OriginalL'auteur Mathews
Vous pouvez fixer la requête en ajoutant un alias de colonne de la colonne au sein de la sous-requête, comme suit:
Toutefois, si
worker_id
identifie les enregistrements sur les travailleurs de la table, c'est fonctionnellement équivalent à (peut être simplifiée):OriginalL'auteur
à l'aide de la clause, il peut être fait comme
OriginalL'auteur Dheerajs83
Il va montrer le Moyenne élevée plus haut salaire d'abord avec dept
Si vous ne pas voulez afficher la Salaire avec Dept alors vous pouvez utiliser cette
OriginalL'auteur Dineesh A V
Vous pouvez de cette manière que la première ligne est triée dans l'ordre décroissant en fonction, en moyenne, trouver
select top 1 worker_id, avg(salaire) comme avgsalary
de travailleurs
groupe par worker_id
commande par avgsalary desc
OriginalL'auteur leila maghsoodi
Vous pouvez aussi le faire avec un seul
select
déclaration (en combinant les deuxmax
etavg
), comme celaOriginalL'auteur Narendra Yadala
Comme expliqué ici
vous pouvez utiliser
OriginalL'auteur Raza Ahmed
Cela devrait également travailler je suppose que
OriginalL'auteur Vaibhav Kedia