/ / Броят събития в таблицата и отпечатване на броя и rank - php, mysql

Брой събития в таблица и отпечатване на броя и rank - php, mysql

В таблицата "Събития" имам колона, наречена Pos1, която съдържа идентификационни номера от А до Е. Трябва да преброя колко пъти се показва "Е" в колоната и къде се намира по останалите числа.

Например в тази таблица се получава "Е" 1 време и се класира 4 (D = 3, А = 2, С = 2, Е = 1, В = 0).

Pos1
E
C
D
C
D
D
A
A

Аз съм пълен SQL аматьор, така че най-близкото, което имам е масив, отпечатващ броя на всеки идентификационен номер, но имам нужда от това да се ограничава до преброяване на единичен идентификатор и отпечатване на ранга.

$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 />";

}

Отговори:

5 за отговор № 1

Опитайте тази:

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 ТУК

EDIT: 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 за отговор № 2

алтернативно класиране в рамките на 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++;
}