Mysql 选择具有字段最大计数的记录

Mysql 选择具有字段最大计数的记录,mysql,sql,Mysql,Sql,问题1: SELECT MaxTable.Customer, MaxTable.Product, Count(MaxTable.Product) AS CountOfProduct FROM MaxTable GROUP BY MaxTable.Customer, MaxTable.Product 这将创建一个派生表,我想将其称为Product\u count\u query 问题2: SELECT Product_count_query.Customer,

问题1:

SELECT MaxTable.Customer,
       MaxTable.Product,
       Count(MaxTable.Product) AS CountOfProduct
FROM MaxTable
GROUP BY MaxTable.Customer, MaxTable.Product 
这将创建一个派生表,我想将其称为Product\u count\u query

问题2:

SELECT Product_count_query.Customer,
       Max(Product_count_query.CountOfProduct) AS MaxOfCountOfProduct
FROM Product_count_query
GROUP BY Product_count_query.Customer;
这将创建一个派生表,我想称之为max\u customer\u count

问题3:

SELECT Product_count_query.Customer,
       Product_count_query.Product,
       Product_count_query.CountOfProduct
FROM Max_Customer_Count
INNER JOIN Product_count_query ON 
       (Max_Customer_Count.MaxOfCountOfProduct = Product_count_query.CountOfProduct) AND
       (Max_Customer_Count.Customer = Product_count_query.Customer);
我想将这三个查询组合在一起,得到如下结果

Customer Name   Products with max number
我的样品台是

Customer Product
James Keyboard
James Monitor
James Keyboard
输出表为(如果James购买了2个键盘和1个显示器)

顾客产品 詹姆斯键盘2


如果购买的产品数量相同,则应使用逗号分隔符连接产品名称和产品计数。

不幸的是
Mysql
不支持
行数
窗口功能

试试这个

SELECT Customer,
       Group_concat(Product separator ','),
       Group_concat(CountOfProduct separator ',')
FROM   (SELECT MaxTable.Customer,
               MaxTable.Product,
               Count(MaxTable.Product) AS CountOfProduct
        FROM   MaxTable
        GROUP  BY MaxTable.Customer,
                  MaxTable.Product) a
WHERE  CountOfProduct = (SELECT Max(CountOfProduct)
                         FROM   (SELECT MaxTable.Customer,
                                        MaxTable.Product,
                                        Count(MaxTable.Product) AS CountOfProduct
                                 FROM   MaxTable
                                 GROUP  BY MaxTable.Customer,
                                           MaxTable.Product) b
                         WHERE  a.Customer = b.Customer)
GROUP  BY Customer

当您正在使用的RDBMS有一个平局

时,用于连接结果。不清楚您在追求什么。如果我没看错你的问题,你可以使用COUNT()和GROUPBY子句通过一个查询得到你想要的。您已经显示了示例表;请包含您希望从该表中获得的输出。当您使用时,为您正在使用的特定DBMS添加一个标记,因为它们之间的语法和功能可能不同,因此它与答案相关。我的输出表应该有客户名称和对应的产品名称以及最大计数。例如,詹姆斯买了两个键盘和一个显示器。因此,结果应该是,我需要向每位客户展示他最常选择的产品!!谢谢你。还有一个帮助,如果有联系,比如说一个客户买了2个键盘和2个显示器,那么我想看看键盘+显示器。如何得到它?@RoleeSatyam查询已经做到了。当一个客户的两个产品之间存在平局时,它将返回两个产品。确实如此,但我想知道是否可以将两个结果合并为一个?@RoleeSatyam那么计数如何?你想对计数求和,还是合并或平均,还是什么?也要合并计数