Grupowanie wyników w zapytaniu

0

Witam,

Mam tabelę gdzie mam poszczególne banki i statusy.

Przykładowo: bank_id, status.

Używając zapytania: Select Bank_ID, Status FROM int_client_bank WHERE status = 30 or status = 50 or status = 35 or status = 37;

Dostaję wynik w postaci:
id_banku, status
np.
1, 30
1, 30
1, 50
1, 35
2, 50
2, 37
itd..

Potrzebuję zrobić zapytanie które dla każdego banku zliczy mi procentowo ile wystąpił dany status i pózniej za pomocą php/symfony wrzucę to do tabeli.

Przykładowo:

1 bank: -
status30 - 2 wystąpienia (20%)
status50 - 4 wystąpienia (40%)
status37 - 4 wystąpienień (40%)
status35 - 0 wystąpień (0%)

2 bank ..
status30 - 2 wystąpienia (20%)
status50 - 4 wystąpienia (40%)
status37 - 2 wystąpienia (20%)
status35 - 2 wystąpienia (20%)

Jak to zrobić?

0

Pisane na szybko, ale coś tego typu powinno zadziałać:

SELECT
  Bank_ID, STATUS, COUNT(*), (COUNT(*)/T.total)*100 AS percent
FROM
  int_client_bank ICB
  JOIN ( SELECT COUNT(*) AS total, Bank_ID FROM int_client_bank WHERE STATUS IN (30,50,37,35) GROUP BY Bank_ID) T ON T.Bank_ID = ICB.Bank_id
WHERE 
  ICB.Status IN (30,50,37,35)
GROUP BY
ICB.Bank_ID, ICB.STATUS

[Adam]

0

@kchteam , patrząc tak na szybko to brakuje warunku dla złączenia JOIN

0
select bank_id,status,percent from 
(
  SELECT  
    ICB.bank_id, 
    icb.STATUS, 
    cast((1.00000 * COUNT(*) / (select count(*) from   int_client_bank where  int_client_bank.BANK_ID=icb.BANK_ID) )   as float) as percent 
  FROM
    int_client_bank ICB   
  GROUP BY
    ICB.Bank_ID, ICB.STATUS
 ) 
where status in (30,35,37,50)

1 użytkowników online, w tym zalogowanych: 0, gości: 1