mysql - 选择最大计数,其中一列决定分组类型

标签 mysql sql

帮助

在只使用一家公司的客户中,找到飞行次数最多的不同乘客。结果集:乘客姓名、乘车次数

[详情] http://i.stack.imgur.com/cBr7E.jpg [检查这个]

我有这个查询

SELECT P.name, COUNT(T.trip_no) AS journeys, C.name as namecompany
FROM
Passenger P, Trip T, Company C, Pass_in_trip PIT
WHERE
P.ID_psg = PIT.ID_psg AND PIT.trip_no = T.trip_no
AND T.ID_comp = C.ID_comp
AND
NOT EXISTS (SELECT * FROM
Passenger, Trip, Company, Pass_in_trip
WHERE Pass_in_trip.ID_psg = P.ID_psg AND Pass_in_trip.trip_no = Trip.trip_no
AND Trip.ID_comp <> C.ID_comp)
GROUP BY P.name, C.name;

我有这个结果集:

# name, journeys, namecompany
'Alan Rickman', '1', 'Don_avia'
'George Clooney', '1', 'Dale_avia'
'Harrison Ford', '3', 'British_AW'
'Michael Caine', '4', 'British_AW'
'Mullah Omar', '4', 'British_AW'
'Nikole Kidman', '3', 'Don_avia'
'Russell Crowe', '1', 'British_AW'
'Steve Martin', '2', 'British_AW'

我想通过一对一点赞来分离结果

# name, journeys, namecompany
'Michael Caine', '4', 'British_AW'
'Nikole Kidman', '3', 'Don_avia'
'George Clooney', '1', 'Dale_avia'

最佳答案

在此查询中,您可以按公司名称获取最大值。试试这个

SELECT subquery.name, MAX(subquery.journeys),subquery.namecompany FROM
(
    SELECT P.name, COUNT(T.trip_no) AS journeys, C.name as namecompany
    FROM Passenger P, Trip T, Company C, Pass_in_trip PIT
    WHERE P.ID_psg = PIT.ID_psg AND PIT.trip_no = T.trip_no
    AND T.ID_comp = C.ID_comp
    AND NOT EXISTS (SELECT * FROM
       Passenger, Trip, Company, Pass_in_trip
       WHERE Pass_in_trip.ID_psg = P.ID_psg 
       AND Pass_in_trip.trip_no =    Trip.trip_no
       AND Trip.ID_comp <> C.ID_comp)
       GROUP BY P.name, C.name
)AS subquery GROUP BY subquery.namecompany;

关于mysql - 选择最大计数,其中一列决定分组类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35546308/

相关文章:

php - 将 mysql 中的数据从 1252 转换并显示为 UTF-8

java - 一次性向所有 MySQL 选择查询添加一列

php - 在html表PHP中显示mysql数据

mysql - Entity Framework 将 StartsWith 转换为 MySQL 的 Locate,MySQL 的 Locate 不使用索引

sql - 拆分 SQL Server 2005 表中的数字和字母

php - mysql从2个表中选择数据,但第2个表具有动态单元格名称

php - 使用 codeigniter 将 row_array 添加到 result_array foreach 循环?

sql - 比较mysql中的两个日期

php - 将两个查询合并为一个查询

SQL - CASE WHEN - 转置后数据显示在单独的行上