Запрос к таблице, чтобы получить 2 счета в одном запросе. - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть две таблицы в MySQL

table1 (Дата (full_date), app_id, тип (бесплатно, платно))
table2 (Date_fk, год, месяц, день, кватер)

Запрос для одного подсчета:

select Year, count(*) 
from Table1, Table2 
where Table1.Date = Table2.Date  and Table1.Type='Free' 
GROUP BY YEAR 

---------------------
| year | free_count |
---------------------
| 2019 |   10       |
---------------------   

Я хочу выводить как

---------------------------------
| year | free_count | Paid_count |
----------------------------------
| 2019 |   10       |    12      |
----------------------------------

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Попробуйте:

SELECT
  d.year,
  SUM(CASE WHEN a.Type = 'Free' THEN 1 ELSE 0 END) AS free_count,
  SUM(CASE WHEN a.Type = 'Paid' THEN 1 ELSE 0 END) AS paid_count
FROM Table2 d -- Dates table
LEFT JOIN Table1 a -- Apps table
  ON d.Date_fk = a.Date
GROUP BY d.year;

LEFT JOIN гарантирует, что вы все равно получите результаты за эти годы без каких-либо приложений.

0 голосов
/ 14 декабря 2018

Вот один из вариантов использования conditional aggregation:

select year, 
     count(case when t1.type='free' then 1 end) as freecount,
     count(case when t1.type='paid' then 1 end) as paidcount
from table1 t1 
    join table2 t2 on t1.date = t2.date  
group by year

Также обратите внимание на синтаксис join.В общем, я бы настоятельно рекомендовал не использовать запятые в предложении from.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...