如何获得与其对应的另一列的输入和值的最大计数

时间:2014-09-25 08:21:52

标签: sql


我有一个有两列的表:

+-------+--------+
|   A   |     B  |
+=======+========+   
| 123   |   111  | 
| 234   |   222  |
| 345   |   111  |
| 456   |   111  |
| 567   |   222  | 
| 678   |   111  |
+-------+--------+

A = A列是主键,我必须传递输入111,222,查询应该找出哪一个在b列中出现最多

例如表111中的

发生了4次因此我需要表A中每次出现的值

2 个答案:

答案 0 :(得分:0)

您可以在b列上使用group by计数,然后使用desc按顺序选择最大计数,并仅选择前1行。如下所示

;WITH CTE AS (SELECT COUNT(1) CountB,B FROM TABLE3 
WHERE B IN (111,222)
GROUP BY B )
SELECT TOP 1 CountB AS MaxCount,B FROM CTE  ORDER BY CountB DESC

我在这里使用了COMMON TABLE EXPRESSION。

答案 1 :(得分:0)

<强>查询

SELECT `B` as popular 
FROM your_table 
WHERE `B` IN ('111','222') 
GROUP BY `B` 
ORDER BY COUNT(*) DESC 
LIMIT 0, 1;
SELECT `A` FROM your_table WHERE B = PUTHEREPOPULAR;