1

私のデータは

ID       SCORE
 1        55
 1        -1
 1        25
 1        -1
 1        -1
 1        35
 2        25
 2        -1 
 2        65
 2        55
 2        21
 2        -1

今、私は-1を無視して各IDのスコアを追加/合計したいのですが、機能していないこのコードを試しています

SELECT SUM(CASE when SCORE>-1 THEN SUM(SCORE) ELSE 0 END) 
FROM jbit WHERE htno='$id'

ここで私はすでにWHEREを使用しているので、別のWHEREを使用するにはどうすればよいですか。単一のクエリで複数のWhereを使用すると、他のプロセスに影響を与える可能性があります..助けてください

友達を助けて

4

4 に答える 4

0

列が2つしかない場合、SUMを使用する必要はありません。以下で試​​すことができます

SELECT id, IF(SCORE=-1,0,SCORE) AS scoreSum
FROM table1
GROUP BY id

Working DEMO

代替(テストされていません)

SELECT id, SUM(IF(SCORE=-1,0,SCORE)) AS scoreSum
FROM table1
WHERE htno =$id
GROUP BY id
于 2012-09-14T17:49:51.997 に答える
0
SELECT SUM(score) AS score_sum
FROM jbit 
WHERE htno='$id'
  AND score <> -1 ;
于 2012-09-14T17:50:27.830 に答える
0
SELECT SUM(`SCORE`)
FROM `jbit`
WHERE `htno` = '$id'
    `SCORE` > 0;

ただし、の列タイプが の場合に'$id'のみに変更することをお勧めします。$idhtnoINTEGER

于 2012-09-14T17:51:00.633 に答える
-1
SELECT SUM(score) FROM <tablename> WHERE score != -1
于 2012-09-14T17:50:01.490 に答える