使用 MySql 计算 AVG 并显示狗展数据库中的前 10 个分数

Calculating AVG and displaying top 10 score within a dog show database using MySql

希望大家在疫情期间一切都好。

我是初学者,这是我的第一个问题,所以对于任何错误,我提前表示歉意。

我被要求计算前 10 名狗的平均得分,这些狗至少参加了一场以上的比赛。显示他们的名字、品种和平均分。我正在努力实现这样的查询任何帮助将不胜感激。

为了让您更深入地了解这些是我正在使用的表格:

ENTRIES TABLE

id | competition_id | dog_id | score 
 1          15            1       3
 2           8            3       9
 3           8            1       7
 4          13            3       6

狗TABLE

id  |  name  |  breed_id 
 1     Kieran      1
 2     Alexa       2
 3     Leah        3
 4     Sonia       4

品种TABLE

id  |  name
 1     Bulldog
 2     Chihuahua
 3     Terrier
 4     Mastiff

这些是我使用的表格

CREATE TABLE Entries
    (`id` varchar(255), `competition_id` varchar(255), `dog_id` varchar(50), `score` varchar(50))
;
    
INSERT INTO Entries
    (`id`, `competition_id`, `dog_id`, `score`)
VALUES
    (1, 15, 1, 3),
    (2, 8, 3, 9),
    (3, 8, 1, 7),
    (4, 13, 3, 6)
;
                                                                  create table Dogs
 (`id` varchar(255), `name` varchar(255), `breed_id` varchar(255));
                                        
 insert into Dogs
        (`id`, `name`, `breed_id`)
values
    (1, 'Kieran', 1),
    (2, 'Alexa', 2),
    (3, 'Leah', 3) ,                                   
    (4, 'Sonia', 4);                                    

 create table Breeds
 (`id` varchar(255), `name` varchar(255));
                                        
 insert into Breeds
        (`id`, `name`)
values
    (1, 'Bulldog'),
    (2, 'Chihuahua'),
    (3, 'Terrier') ,                                   
    (4, 'Mastiff');          

此查询将仅显示在超过 1 场比赛中得分的狗的平均值,按犬种分组。

select trainer, breed, score
from

(select Breeds.id as id, Dogs.name as trainer, Breeds.name as breed, avg(score) as score, count(Breeds.id) as count
from Entries
join Breeds on Entries.dog_id = Breeds.id
join Dogs on Breeds.id = Dogs.breed_id
group by breed
order by count)x
where count >= 2
group by breed

;

结果

+-------+--------+---+
| Kieran| Bulldog|  5|
+-------+--------+---+
|   Leah| Terrier|7.5|
+-------+--------+---+