使用GROUP BY时,MySQL SUM返回所有行的结果

时间:2016-03-22 10:58:11

标签: mysql

我需要根据所选的组获得价值总和,我得到所有的价值总和,我正在尝试这种方式。

数据库

|    ip      |  date    | value |
| 1698170033 | 19032016 | 1000  |
| 1698170034 | 19032016 | 1000  |
| 1698170033 | 19032016 | 1000  |
| 1698170033 | 20032016 | 1000  |
| 1698170034 | 20032016 | 1000  |
| 1698170035 | 20032016 | 1000  |
| 1698170036 | 20032016 | 1000  |
| 1698170034 | 20032016 | 1000  |

的MySQL

SELECT 
`date`, `ip`, SUM(`value`)
FROM `stats`.`stats`    
GROUP BY `date`, `ip`

这样可以得到结果

| 1698170033 | 19032016 | 2000 |
| 1698170034 | 19032016 | 2000 |
| 1698170033 | 20032016 | 1000 |
| 1698170034 | 20032016 | 1000 |
| 1698170035 | 20032016 | 1000 |
| 1698170036 | 20032016 | 1000 |

预期结果

| 1698170033 | 19032016 | 1000 |
| 1698170034 | 19032016 | 1000 |
| 1698170033 | 20032016 | 1000 |
| 1698170034 | 20032016 | 1000 |
| 1698170035 | 20032016 | 1000 |
| 1698170036 | 20032016 | 1000 |

请建议任何可行的方法。

由于

1 个答案:

答案 0 :(得分:2)

看起来你要么想要平均值,要么只想要其中一个值:

  SELECT `date`, `ip`, AVG(`value`)
  FROM `stats`.`stats`
  GROUP BY `date`, `ip` 

或者:

  SELECT `date`, `ip`, max(`value`)
  FROM `stats`.`stats`
  GROUP BY `date`, `ip` 

或者您想要区分输出:

  SELECT distinct `date`, `ip`, `value`
  FROM `stats`.`stats`