2015-05-22 5 views
1

Привет У меня есть таблица mysql с именем content, где у меня есть столбец «status», который имеет 3 значения, converted, negotiating и received. теперь я хочу подсчитать, сколько из них получили статус, переговоры и конвертированы для разработки диаграммы.Значения подсчета SQL из того же столбца

вот что я использовал:

SELECT status, 
SUM(CASE WHEN status = 'converted' = 1 THEN 1 ELSE 0 END) AS converted, 
SUM(CASE WHEN status = 'negotiating' = 1 THEN 1 ELSE 0 END) AS negotiating, 
SUM(CASE WHEN status = 'Received NA' = 1 THEN 1 ELSE 0 END) AS ReceivedNA 
FROM content GROUP BY status; 

Он показывает мне результат, но таким образом, что я не могу использовать его.

кормить схему я использовал это:

$data = array(
     array('converted', $converted), 
     array('negotiating', $negotiating), 
     array('received', $received) 
    ); 

Так я думаю, некоторые вещи, как этот стол будет решить мою проблему:

status      result 
--------------------------- -------- 
converted      1 
negotiating      5 
received       4 

Так может кто-нибудь подскажет, как можно изменить свой SQL, чтобы получить ожидаемый результат?

еще раз

+0

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

ответ

3

Использование GROUP By. Попробуйте это -

SELECT status, count(status) result FROM content GROUP BY status 
+0

Спасибо, человек, я настолько тупой, что я думал о запросе очень сложно ... –

+0

Добро пожаловать. –

0

Будет ли это работать на вас?

Статус SELECT, счет (статус) FROM content GROUP BY status;

1

Чтобы получить конкретный счет, используйте GROUP BY.

select status,count(1) as result from content GROUP BY status;

Вместо того, чтобы использовать сумму, количество всегда лучше и проще

EDIT-ответить Закомментируйте

Параметр функции COUNT является выражением, которое должно быть оценено для каждой строки. Функция COUNT возвращает количество строк, для которых выражение оценивается как ненулевое значение. (* - это специальное выражение, которое не оценивается, оно просто возвращает количество строк.)

Существует два дополнительных модификатора для выражения: ALL и DISTINCT. Они определяют, выбраны ли дубликаты. Поскольку ALL является значением по умолчанию, ваш пример совпадает с count (ALL 1), что означает, что дубликаты сохраняются.

Поскольку выражение «1» оценивается как ненулевое для каждой строки, и поскольку вы не удаляете дубликаты, COUNT (1) всегда должен возвращать тот же номер, что и COUNT (*).

+0

просто из любопытства, что это значит 1 означает в счет? –

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