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

关于group by 问题 返回多字段记录数不正确
有个表  , id  降水量,加入时间 坐标X 坐标Y 等等字段。
我现在要求的是过去几小时之内的 降水量

select sum(降水量) from 表  (where省略)  group by id;
这样是获得的条数是正确的

但是当我select sum(降水量) (这里加其他字段)  后面也要在group by 加上哪些字段的时候
获得的结果记录数是不正确的,不知道大家碰到没有?

------解决方案--------------------
引用:
有个表  , id  降水量,加入时间 坐标X 坐标Y 等等字段。
我现在要求的是过去几小时之内的 降水量

select sum(降水量) from 表  (where省略)  group by id;
这样是获得的条数是正确的

但是当我select sum(降水量) (这里加其他字段)  后面也要在group by 加上哪些字段的时候
获得的结果记录数……



select sum(降水量) (这里加其他字段)
这里其他字段相同的都视为同一条记录,如果其他字段中只有id那么只要id相同就视为同一条记录,对同一个id进行sum运算。当其他字段不唯一时,也就是有好多个其他字段,那么这些字段相同的时候,对相同的这些“其他字段”进行sum运算。你好好看看group by的含义是什么,你就会知道了。希望对你有帮助,谢谢
------解决方案--------------------
可以先用子查询查询出汇总的值和一个标识值,然后用exists来获取其他字段
------解决方案--------------------
假设你需要加入id和坐标X,可以用:


SELECT  a.id ,
        b.降水量,a.坐标X
FROM    表 a
        INNER JOIN ( SELECT id ,
                            SUM(降水量) 降水量
                     FROM   表(where省略)
                     GROUP BY id
                   ) b ON a.id = b.id