La réponse de Joel me semble la meilleure. Publier pour expliquer la requête, et parce que la réponse a une somme/un nombre entier de division qui retournera 1 ou 0 au lieu d'un pourcentage.
Pour le 20 -> 32,5 gamme:
select CAST(SUM(
CASE WHEN 20 < field AND field <= 32.5 THEN 1 ELSE 0 END
) as float)/COUNT(*) * 100.0
from table
Le cas retourne 1 lorsque la valeur est à portée. Comme il n'y a pas de clause group by, la somme ajoute le résultat du cas pour chaque ligne de la table. Convertir en float, diviser par le nombre de lignes = count (*), et vous obtenez le pourcentage.
Vous pouvez également écrire comme:
select SUM(
CASE WHEN 20 < field AND field <= 32.5 THEN 1.0 ELSE 0.0 END
)/COUNT(*) * 100
from table
le cas ici se traduira par un flotteur 1.0 au lieu de l'entier 1.
que visez-vous? – curtisk
Apparemment SQL Server, si vous considérez les balises. –
fyi: près de 5 000 questions marquées 'sqlserver' contre seulement 56 'mssql'. Quel tag pensez-vous que la communauté a décidé d'utiliser? –