日期:2014-05-17  浏览次数:20408 次

求sql conut(max)
表:wps_systemtj 
字段:sys_id,  sys_userDiQu,  sys_version 
        2     11        7.1.7.17
        3     11        7.1.7.17
        4     31        7.1.6.16
        5     31        6.1.6.16
        6     11        7.1.6.16

怎么实现这个查询:
select sys_userDiQu ,count(max(sys_version))from wps_systemtj group by sys_userDiQu (现在有问题。)

------解决方案--------------------
select a.sys_userDiQu,COUNT(*) cc
from wps_systemtj a
inner join 
(
select sys_userDiQu ,max(sys_version) as max_sys_version
from wps_systemtj 
group by sys_userDiQu 
)b
 on a.sys_userDiQu = b.sys_userDiQu and
    a.sys_version = b.max_sys_version
group by a.sys_userDiQu

------解决方案--------------------
第一:不能对包含聚合或子查询的表达式执行聚合函数 ,所以count(max(sys_version)) 这个写法存在语法错误。
第二:sys_version 这个列的类型不能用max函数
------解决方案--------------------
因为max对应的sys_userdiqu只有一个,如果你要不现实sys_userDiQu,直接在外层count,不用group by和select那里的sys_userDiQu