寻找小狗主人的名字,其中有小狗最服务的小狗梳理

ltqd579y  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(452)

我有两张table:第一张:主人

Owner_ID    Owner_Name      
   1           Sam  
   2          Andrea
   3          Gabriela

第二个:服务结束

Puppy_ID   servided_date
1               01/25/2012
2               02/18/2012
3               05/14/2012

第三个:

Puppy's table

Puppy_ID     Owner_ID
1               1
2               2
3                3

我有这个密码:

Select owner_name
from puppy p, owner o 
where p.owner_id = o.owner_ID

从这里我被困住了。我在考虑两张table之间的连接,但我不确定

eeq64g8w

eeq64g8w1#

上面的查询将根据所有者对其进行分组,并根据服务出现的次数对其进行排序(降序),从而为您提供服务的小狗最多的所有者。

SELECT Top 1 o.Owner_Name  --Owner with most servicing
FROM Owner o
JOIN Puppys p ON o.Owner_ID = p.Owner_ID
JOIN Service_Done c ON c.Puppy_ID = p.Puppy_ID
GROUP BY o.Owner_ID  --grouping based on owner
ORDER BY count(*) DESC --order in descending order on the count of occurences
js4nwp54

js4nwp542#

以下将返回前5名的主人谁的宠物服务最多。

SELECT 
    a.`Owner_ID`,
    a.`Owner_Name`,
    COUNT(*) as `Times_Serviced`
FROM `Owner` a
JOIN `Puppys` b
ON a.`Owner_ID` = b.`Owner_ID`
JOIN `Service_Done` c
ON c.`Puppy_ID` = b.`Puppy_ID`
GROUP BY a.`Owner_ID`
ORDER BY count(*) DESC
LIMIT 5;

通过改变分组方式,您还可以退回服务最多的宠物。您还可以按年份(或其他时间段)对结果进行分组。

相关问题