Comment sélectionner les produits qui ont le prix maximum de chaque catégorie?
Ci-dessous est mon tableau qui est le point tel que:
ProductId ProductName Category Price
1 Tiger Beer $12.00
2 ABC Beer $13.99
3 Anchor Beer $9.00
4 Apolo Wine $10.88
5 Randonal Wine $18.90
6 Wisky Wine $30.19
7 Coca Beverage $2.00
8 Sting Beverage $5.00
9 Spy Beverage $4.00
10 Angkor Beer $12.88
Et je suppose que je n'ai que trois category
dans ce tableau (que je peux avoir beaucoup de category
dans ce tableau). Et je veux voir le maximum de produit du prix de chaque category
dans ce tableau.
- ce sgbd que vous utilisez? mysql? db2? mssql?
- Woo -
sql
tag signifieansi sql
- Dans ce cas, l'OP est à l'aide d'un entièrement théorique de base de données.
- Je suis l'aide de Sql Server.
- puisque vous utilisez MSSQL, pourquoi ne pas utiliser les fonctions de la fenêtre? voir la démonstration ci-dessous.
- il peut, par exemple, dans les cours universitaires
- qui est ce "théorique" des moyens.
- Dans mon commentaire de John Woo, je voulais dire qu'il pourrait être théorique db et non pas "réel" (mysql/db2/mssql...) Quel est le problème ?
Vous devez vous connecter pour publier un commentaire.
Essayer celui-là, si vous voulez obtenir l'ensemble de la ligne,
(prend en charge la plupart des SGBDR)
Si vous utilisez
MSSQL 2008+
ou
SQLFiddle Démo
Si vous voulez récupérer d'autres domaines aussi avec le nom de la catégorie, puis :
Cela devrait fonctionner:
Ce groupes de la table par chaque catégorie et utilise le
MAX
fonction d'agrégation pour obtenir le prix le plus élevé pour chaque.Voici une autre façon de faire où MAX est considérée comme la fonction analytique (Disponible depuis SQL Server 2005)
Résultat