2015-09-03 5 views
0

Например, у меня есть столбец: bank_id и статус.Группировка результатов запроса в sql

Использование запроса:

SELECT Bank_ID, status FROM int_client_bank WHERE status = 30 or status = 50 or status = 35 or status = 37; 

Я получаю результат:

, например.

**id_bank status** 
    1, 30 
    1, 30 
    1, 50 
    1, 35 
    2, 50 
    2, 37 

и т.д ..

мне нужно сделать запрос, который для каждого банка может посчитать меня, если был процент состояния, а затем с помощью PHP/Symfony бросить его к столу.

ЭСТ: 1 банка: -

status30 - 2 each (20%) 
status50 - 4 each (40%) 
status - 6 each (60%) 

2 банка т.д ..

Как это сделать?

+0

Ваш запрос sql кажется неполным. Раздел 'FROM' отсутствует – CodeGodie

ответ

1

Использования группировки в вашем SQL группы банка и статусом и подсчетом строк из каждой группы:

SELECT Bank_ID, status, COUNT(Bank_ID) count FROM int_client_bank WHERE status = 30 or status = 50 or status = 35 or status = 37 GROUP BY Bank_ID, status;

Тогда вы можете подвести подсчет и для каждой строки вычислить процент, как $row['count']/$all_count * 100.

0

Я считаю, что это то, что вы ищете. Вы можете сделать все это в MySQL с подзапросом.

select 
    myTable.id_bank, myTable.status, count(*) as ct, count(*)/t2.cnt * 100 as pct from myTable 
join (
    select id_bank, count(*) AS cnt 
    from myTable 
    group by id_bank 
) as t2 on myTable.id_bank = t2.id_bank 
group by myTable.id_bank, myTable.status; 

http://sqlfiddle.com/#!2/46834/11

0

sphirate.thremer:

У меня есть просьба:

SELECT Bank_ID, Status, COUNT(Bank_ID) 
FROM int_client_bank 
WHERE status = 30 
    or status = 50 
    or status = 35 
    or status = 37 
GROUP BY Bank_ID, Status; 

И посмотреть данные:

"Bank_ID" "Status" "COUNT(Bank_ID)" 
"1" "30" "772" 
"1" "35" "58" 
"1" "50" "151" 
"2" "30" "124" 
"2" "35" "27" 
"2" "50" "25" 
"3" "30" "227" 
"3" "35" "16" 
"3" "37" "1" 
"3" "50" "143" 
"4" "30" "337" 
"4" "35" "23" 
"4" "37" "1" 
"4" "50" "98" 
"5" "30" "72" 
"5" "35" "7" 
"5" "50" "9" 
"6" "30" "113" 
"6" "35" "3" 
"6" "50" "68" 
"7" "30" "16" 
"7" "50" "10" 
"8" "30" "13" 
"8" "35" "1" 
"8" "50" "6" 
"9" "30" "16" 
"9" "35" "2" 
"9" "50" "6" 
"10" "30" "4" 
"10" "35" "2" 
"11" "30" "2" 
"11" "50" "2" 
"12" "30" "4" 
"12" "35" "1" 
"12" "50" "1" 
"13" "30" "3" 
"13" "50" "2" 
"14" "30" "5" 
"15" "30" "1" 
"15" "50" "1" 
"16" "30" "1" 
"17" "30" "1" 
"18" "30" "2" 

Как я могу поместить это в symfon y, чтобы сделать JsonResponse ?:

return new JsonResponse(array('data' => $result, 'success' => true));: 
Смежные вопросы