2012-02-05 3 views
1
name | sub1 | sub2 | sub3 
__________________________ 
prad | poor| good | poor 
vas | good | poor | poor 

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

Я попробовал запрос "SELECT name, COUNT(name) FROM tbl_name where (sub1,sub2,sub3)='poor' group by name;" Это не работает ..please помощи Как я могу подсчитать количество строк?

+0

Непонятно, что такое структура таблицы. Это 'имя | sub1 | sub2 | sub'? Если это так, у него всего 4 столбца, и данные, которые вы предоставили «prad | poor | etc», превышают его. Можете ли вы дать лучший пример, обеспечивающий более удобную структуру таблицы и таблицы? Благодарю. –

+0

Фактически вторая строка начинается со слова «vas» –

+0

Я могу рассчитать, что sub3 имеет два «плохого». но как я могу рассчитать «бедных», т. е. вас или прад, –

ответ

0

Попробуйте, если вы можете иметь много одинаковых имен в таблице (вы не указали, что было первичным ключом) :

select name, sum(
    if (sub1='poor', 1, 0) + 
    if (sub2='poor', 1, 0) + 
    if (sub3='poor', 1, 0) 
) as total from Data 
group by name; 

Вот example

Или это, если вы не повторили имена в вашей таблице:

select name, 
    if (sub1='poor', 1, 0) + 
    if (sub2='poor', 1, 0) + 
    if (sub3='poor', 1, 0) 
as total from Data 

Вот example

Позвольте мне знать, если это работает.

+0

спасибо ..и работает, тогда я сделаю это с рулоном no в качестве первичного ключа –

+0

Отлично. Если это сработает, тогда вы должны пометить вопрос как ответ :) –

-1

Если вы ограничиваете его просто poor, группа не имеет смысла:

SELECT COUNT(name) FROM tbl_name WHERE name='poor' 
+0

Я могу рассчитать, что sub3 имеет два «плохого». но как я могу рассчитать «бедных», то есть vas или prad имеют –

0

SELECT, имя, (ЕСЛИ (sub1 = 'бедных', 1,0) + ЕСЛИ (sub2 = 'плохо', 1,0) + ЕСЛИ (sub3 = 'плохо', 1,0)) AS Total_Poor FROM demo1 GROUP BY name;

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