2016-03-22 13 views
2

グループごとに値を集計する必要があります。代わりにすべての値の合計が得られます。GROUP BYを使用すると、MySQL SUMはすべての行の結果を返します

データベース

| 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 | 

可能な方法を提案してください。

おかげ

+0

これはすべてクエリですか? – sagi

+0

@sagi yes thatsテスト目的のすべてのクエリ –

+0

結果に合計を必要としない場合は、なぜSUM関数を使用しますか? – piotrgajow

答えて

2

そんなに平均をしたい、またはちょうど1の値のいずれかのように見える:

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

または:

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

それとも、個別の出力したいの:

+0

はい、それは私が探していたものです。ありがとう –

関連する問題