/ / Compter les occurrences dans une table et afficher à la fois le nombre et le rang - php, mysql

Compter les occurrences dans une table et imprimer à la fois le nombre et le classement - php, mysql

Dans ma table des événements, j'ai une colonne appelée Pos1, qui contient les identifiants de A à E. Je dois compter combien de fois "E" apparaît dans la colonne et où il se classe par rapport aux autres nombres.

Par exemple, dans cette table "E" apparaît 1 temps et est classé 4 (D = 3, A = 2, C = 2, E = 1, B = 0).

Pos1
E
C
D
C
D
D
A
A

Je suis un amateur de SQL complet, donc le plus proche que j’ai eu est un tableau indiquant le nombre de chaque ID, mais j’ai besoin que cela soit limité au comptage d’un seul ID. et imprimer le rang.

$query = "SELECT Pos1, COUNT(Pos1) FROM Events GROUP BY Pos1";

$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($result)){

echo $row["COUNT(Pos1)"] ."<br />";

}

Réponses:

5 pour la réponse № 1

essaye ça:

SELECT Pos1, a.cnt, rank
FROM(
SELECT a.Pos1, a.cnt, (@rank := @rank + 1) AS rank
FROM(
SELECT Pos1, COUNT(Pos1) cnt
FROM Events
GROUP BY Pos1
) a, (SELECT @rank := 0) b
ORDER BY a.cnt DESC
)a
WHERE a.pos1 = "E";

SQLFIDDLE DEMO ICI

EDIT: code php

$query = "SELECT Pos1, a.cnt, rank
FROM(
SELECT a.Pos1, a.cnt, (@rank := @rank + 1) AS rank
FROM(
SELECT Pos1, COUNT(Pos1) cnt
FROM Events
GROUP BY Pos1
) a, (SELECT @rank := 0) b
ORDER BY a.cnt DESC
)a
WHERE a.pos1 = "$pos1"";

$result = mysql_query($query) or die(mysql_error());

$row = mysql_fetch_row($result);

echo $row["Pos1"]." ".$row["cnt"]." ".$row["rank"]."<br />";

0 pour la réponse № 2

sinon, se classer dans PHP:

$query = "SELECT Pos1, COUNT(Pos1) AS qty FROM Events GROUP BY Pos1 ORDER BY qty DESC";

$result = mysql_query($query) or die(mysql_error());
$rank=1;
while($row = mysql_fetch_array($result))
{
echo $rank.": ".$row["Pos1"]."(".$row["qty"].")<br />";
$rank++;
}