在sql中对查询结果进行分组

时间:2015-09-03 13:51:35

标签: php mysql

例如,我有一个列:bank_id和status。

使用查询:

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将每个银行都可以计算我。

ECT: 1银行: -

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

2银行 等等..

怎么做?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分: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"

我如何把它放在symfony中制作JsonResponse?:

return new JsonResponse(array('data' => $result, 'success' => true));: