Суммирование строк с несколькими идентификаторами - PullRequest
0 голосов
/ 15 января 2012

Я использую этот запрос:

SELECT SUM(voc=1) AS s, SUM(voc=2) AS d, SUM(voc=3) AS p FROM `pl`;

Но теперь мне нужно изменить этот запрос, поэтому он будет SUM, когда voc равно нескольким числам:

SELECT SUM ( voc = 1 OR voc = 7 OR voc = 3 ) as `s` FROM `pl`;

К сожалению, вышеописанное не работает должным образом, я читал, что это можно сделать с помощью CASE, но мои знания об этом слишком малы ...

1 Ответ

3 голосов
/ 15 января 2012
SELECT SUM ( CASE WHEN voc = 1 OR voc = 7 OR voc = 3 THEN 1 ELSE 0 END) as `s` FROM `pl`;

UPD Как указано @Raul в комментарии - WHERE должно быть намного эффективнее, например:

SELECT COUNT(*) AS `s` FROM `p1` WHERE voc IN (1,3,7);

UPD2 ИзмененоСумма для графа - благодаря @ newtower

...