Как объединить эти два sql в один sql?

0
select partnerid, count(distinct processId) balance_count
from mipay.operation_log
where date = '20180501' and source = 'api' and operation = 'pay'
group by partnerid and info like "%BANLANCE%" group by partnerid;

результат:

partnerid    balance_count
    1              11
    2              13  

select partnerid, count(distinct processId) bankcard_count
from mipay.operation_log
where date = '20180501' and source = 'api' and operation = 'pay'
group by partnerid and info like "%BANKCARD%" group by partnerid;

результат:

  partnerid    bankcard_count
    1              23
    2              17

Я надеюсь получить следующий результат за один sql

partnerid   balance_count  bankcard_count
    1            11              23
    2            17              17
  • 1
    MySQL действительно выполняет эти недействительные запросы?!?
Теги:
database

1 ответ

2

Используйте выражения case для условной агрегации:

select partnerid,
       count(distinct case when info like "%BANLANCE%" then processId end) balance_count,
       count(distinct case when info like "%BANKCARD%" then processId end) bankcard_count
from mipay.operation_log
where date = '20180501' and source = 'api' and operation = 'pay'
group by partnerid 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню