SQL计数记录从个人最佳表中保存在历史记录中

时间:2013-11-01 10:03:11

标签: php mysql sql

我有一张个人最好的桌子,可以为每条命名鱼提供钓鱼重量个人最佳记录。这些属于特定物种。

到目前为止,我已经设法为每条命名的鱼提取所有时间记录,按物种分组。

我现在要做的是设置一个显示各种信息的统计页面,一个是所选渔夫持有的所有时间记录的数量(计数)。

我有一个选择器,因此您可以选择显示统计信息的名称,这样可以正常工作。

我似乎无法统计选定的渔夫所选择的所有时间记录。

我尝试过嵌套Select语句但没有结论。我对这些东西也很陌生。

这是我的初学者代码,其中包含相关的字段名称。

SELECT Specie, NameFish, Contender, MAX(Drams) FROM PB_Scores GROUP BY NameFish

然后说表是......

SPECIE - NAMEFISH - CONTENDER - DRAMS

Tench  | Barry    | Jonhson   | 234
Pike   | Glub     | Johnson   | 3456
Pike   | Blake    | Johnson   | 4567
Pike   | Blake    | Mitchell  | 4890
Pike   | Glub     | Mitchell  | 0 
Tench  | Barry    | Mitchell  | 2420

选择Mitchell的结果应该是: -

2(因为Mitchell让Barry和Blake的重量更大,因此计数为2)。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

进行子查询以获得鱼类的每个物种/名称的最大重量,然后将其加回到表中以获得具有该物种/名称和重量的鱼类的竞争者: -

SELECT a.Contender, COUNT(*)
FROM PB_Scores a
INNER JOIN
(
    SELECT Specie, NameFish, MAX(Drams) AS MaxSpeciesWeight
    FROM PB_Scores
    GROUP BY Specie, NameFish
) b
ON a.Specie = b.Specie
AND a.NameFish = b.NameFish
AND a.Drams = b.MaxSpeciesWeight
GROUP BY a.Contender

SQL小提琴: -

http://www.sqlfiddle.com/#!2/966bf/1

请注意,如果2人同时捕获了同一物种,名称和体重的鱼,这可能会产生奇怪的结果。