SQL запрос - как посчитать значения в строке отдельно? - PullRequest
1 голос
/ 29 марта 2010

У меня есть таблица, которая выглядит примерно так:

id | firstperson | secondperson
1 | jane doe |
2 | bob smith | margie smith
3 | master shifu | madame shifu
4 | max maxwell | 

Я пытаюсь сосчитать всех первых лиц + всех вторых лиц, если поле вторых лиц не пустое ... Есть ли способ сделать это?

Ответы [ 5 ]

5 голосов
/ 29 марта 2010
SELECT SUM(CASE WHEN secondperson='' THEN 1 ELSE 2 END) FROM thetable;
2 голосов
/ 29 марта 2010
select sum(1 + case when secondperson <> '' then 1 else 0 end)
from MyTable
0 голосов
/ 29 марта 2010

Если предположить, что пробел означает NULL, то в postgres, как и в других системах, count (поле) будет считать поле только , если оно не равно нулю и

SELECT count(*)+count(secondperson) FROM thetable;

даст желаемый результат. (Синтаксис SQL учитывает значения NULL лучше, чем пользовательские значения для отсутствующих данных. Кроме того, не по теме, любые поля с номерами в названии являются кандидатами для пересмотра проекта)

0 голосов
/ 29 марта 2010

ВЫБЕРИТЕ СУММУ (СЛУЧАЙ, КОГДА второй человек = '' ИЛИ ​​второй человек НУЛЬ ТО 0, ЛИБО 2 КОНЕЦ) ОТ таблицы;

0 голосов
/ 29 марта 2010

Я не уверен, относится ли это к Postgres или нет, но в большинстве баз данных, если мы считаем, что могут быть значения NULL, и что вопрос был действительно «если поле второго лица не NULL», то вы должны явно включить NULLS. в состоянии, а не пустое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...