2015-09-10 2 views
0

У меня есть таблица с несколькими столбцами:Подсчет вхождений значения в столбце таблицы - PostgreSQL

table1 | column1 | column2 | column3 | 
     | x | .... | .... | 
     | y | .... | .... | 
     | x | .... | .... | 

Как можно считать вхождения значения, например х, в одном из столбцов , например, column1? В таблице 1 это должно было бы вернуть мне 2 (числа х, присутствующие в столбце 1).

+0

Вы должны действительно найти учебник по SQL. Это основная информация, которая не отличается для PostgreSQL. –

ответ

0
SELECT COUNT(*) FROM table1 WHERE column1 = 'x' 
+0

Я новичок в sql/postgresql. Спасибо друг! –

+0

Вы можете принять ответ, если он помог :) – eugenioy

0

Вы можете использовать SUM() агрегатную функцию с CASE заявление как

select sum(case when column1 = 'x' then 1 else 0 end) as X_Count 
from tabl1; 
+0

Является ли это быстрее, чем подсчет футуристики buildin()? –

+0

@ VictorTurrisi, он должен и должен давать вам такую ​​же производительность, как и для count(). Это просто другой способ сделать ту же проблему. – Rahul

+0

Если таблица значительна по размеру, и есть индекс в столбце1, то использование условия WHERE потенциально может быть большим выигрышем, поскольку оно будет обращаться только к столбцам, которые соответствуют условию (и фактически могут вообще не попадать в таблицу , для этого простого случая, удовлетворяющего ответу от индекса), тогда как ваша логика в наборе возврата будет каждый раз заставлять сканирование полной таблицы. – reedstrm

Смежные вопросы