2011-04-20 85 views
2

我如何可以查询交易的最大计数数的最大计数...... 我的代码如下:SQL查询 - 如何获取列表

SELECT customer_id, COUNT(customer_id) 
FROM rental 
GROUP BY customer_id 
HAVING MAX(COUNT(customer_id)); //I need to get the MAXIMUM COUNT of the list 
+2

什么数据库您使用rsbarro的答案吗? – 2011-04-20 03:46:37

+0

我想我们需要一些示例数据,如果没有发布的答案适合你。 – rsbarro 2011-04-20 03:52:26

回答

2

由于更多比一个客户可以拥有相同数量的最大值哟ü应该做如下

SELECT customer_id, 
     COUNT(customer_id) AS customerrowcount 
FROM rental 
GROUP BY customer_id 
HAVING COUNT(customer_id) = (SELECT COUNT(customer_id) 
          FROM rental 
          GROUP BY customer_id 
          ORDER BY COUNT(customer_id) DESC 
          LIMIT 1) 

但是,如果你确定一个任意的客户所选择比你应该使用

+0

那么我该如何解决让客户拥有相同MAXIMUM账户的问题 – newbie 2011-04-20 04:46:18

+1

您将得到两位客户。你需要从你的用户那里找到解决关系的人。 – 2011-04-20 04:52:16

+0

@ConradFrix这也可以通过不使用限制? – Achyut 2013-11-11 08:24:45

3

如果你正在寻找在customer_id与在rental表中的行数,你可以使用:

SELECT customer_id, COUNT(customer_id) as CustomerRowCount 
FROM rental 
GROUP BY customer_id 
ORDER BY COUNT(customer_id) DESC 
LIMIT 1 

上面的查询将计算所有记录每个CUSTOMER_ID,按降序排序,然后只选择最上面一行。客户的最大数量将出现在CustomerRowCount

编辑
康拉德提出了如此地步,两个或两个以上customer_id的可能有相同数量的记录。如果业务需求是在这种情况下应该返回多个记录,那么他的查询会给你你正在寻找的结果。如果只有一个记录应该返回,那么一个简单而一致的打破关系的方法就是让用户使用最低的customer_id。要做到这一点,你可以改变的ORDER BY语句:

ORDER BY COUNT(customer_id) DESC, customer_id 
+0

我需要知道MAXimum COUNT – newbie 2011-04-20 03:44:30

+0

@newbie对不起,我不明白你在找什么。如果有人还没有弄明白,你可以用一些样本数据更新你的问题吗? – rsbarro 2011-04-20 03:47:07

+1

@newbie这两个查询都提供了最大数量。或者是特定客户的最大计数。因此,按照降序排序,然后选择第一排的原因。 – 2011-04-20 03:48:13

3

尝试:

SELECT customer_id, MAX(COUNT(customer_id)) 
FROM rental 
GROUP BY customer_id; 

SELECT top 1 customer_id, COUNT(customer_id) 
FROM rental 
GROUP BY customer_id 
ORDER BY COUNT(customer_id) DESC 
+0

MAX(COUNT(customer_id))不起作用 – newbie 2011-04-20 03:50:06

+1

我想你错过了第二个查询的ORDER BY上的DESC。 =] – rsbarro 2011-04-20 05:03:47

+0

@rsbarro - 感谢您指出。立场纠正。 – Kangkan 2011-04-20 06:04:26

2

查询为MySQL

SELECT 
    * 
FROM (SELECT 
     customer_id, 
     COUNT(customer_id) AS CountOfCustomer 
     FROM rental 
     GROUP BY customer_id) q1 
ORDER BY CountOfCustomer DESC 
LIMIT 1 
+0

我正在使用MYSQL – newbie 2011-04-20 03:49:41