我无法在SQL中正确使用MAX()

时间:2013-02-17 13:41:04

标签: sql count group-by max

假设我的桌子是这样的:

id  code    newCode
-------------------
1   30002   3000231
2   30002   3000232
3   30002   300021
4   30002   300021
5   30009   300093
6   30009   300093
7   30012   3001231
8   30012   3001232
9   30012   300124
10  30012   300121
11  30012   300121
12  30013   3001331
13  30013   3001332
14  30013   300134

我希望在newCode中得到最多的重复数(在这种情况下为2 - 例如num 10和11相同,所以2)

我的SQL命令是:

SELECT MAX(c.newCode)
FROM
            SELECT COUNT(c.newCode)
            FROM courseTaun c
            GROUP BY c.newCode

我只是语法错误。

如果我只跑:

SELECT COUNT(c.newCode)
            FROM courseTaun c
            GROUP BY c.newCode

我明白了:

COUNT(c.newCode)
2
1
1
2
2
1
1
1
1
1
1

如果我只跑

SELECT MAX(c.newCode)
FROM courseTaun c

我得到的值:300134

为什么我不能将2结合起来给出我需要的价值呢?

非常感谢帮助者:)

4 个答案:

答案 0 :(得分:1)

我猜 NewCode列已保存为string。为了获得最大值,您需要先将其强制转换为数字

SELECT  MAX(CAST(newCode as SIGNED))
FROM
(
    SELECT  newCode
    FROM    tableName
    GROUP   BY newCode
    HAVING  COUNT(*) > 1
) s

更新1

SELECT  MAX(CAST(newCode as INT))
FROM
(
    SELECT  newCode
    FROM    table1
    GROUP   BY newCode
    HAVING  COUNT(*) > 1
) s

答案 1 :(得分:1)

因为您在FROM

后面缺少括号
... FROM ( statement ) x

答案 2 :(得分:1)

select max(dups) from (select count(newCode) as dups from courseTaun group by newCode) as temp1;

答案 3 :(得分:0)

您的SQL命令出现语法错误,但在SQLServer2005 +中您可以编写查询而不使用子查询

SELECT TOP 1 MAX(COUNT(c.newCode)) OVER()
FROM courseTaun c
GROUP BY c.newCode