Как лучше объединить несколько таблиц (включая подзапросы) в один запрос? - PullRequest
0 голосов
/ 05 сентября 2018

Как лучше объединить несколько таблиц (включая запросы) в одном запросе?

Например, у меня есть 2 таблицы: активность (user_id, login_time) и платежи (user_id, payment_time, сумма).Обе таблицы содержат одинаковые идентификаторы.

Задача состоит в том, чтобы выбрать уникальный user_id, который когда-либо выплачивался, с login_time с 05.04.12 по 10.04.12.Затем определите по группам общую сумму.

Мой запрос:

SELECT t.diapason, COUNT(*) AS 'number_of_users'
FROM (SELECT CASE  
    when amount<100 then '0-100' 
    when amount>=100 then '100 +' END AS diapason
    FROM 
        (SELECT SUM(amount) AS amount 
        FROM payments GROUP BY payments.user_id) p) t
  GROUP BY t.diapason
  ORDER BY number_of_users desc;

Я не знаю, где мне использовать «внутреннее соединение .... между» 2012-04-05 'and'2012-04-10' '

Пожалуйста, помогите, спасибо!

ОБРАЗЕЦ ДАННЫХ

activity
user_id    login_time
1          05.04.2012
2          05.04.2012
3          06.04.2012
4          30.05.2012

payments
user_id    amount   payment_time
1          50       10.12.2011
1          20        09.12.2011
2          400        08.08.2011

Output for period 05.04.2012-10.04.2012

diapason     number_of_users
0-100          2
100+           1

1 Ответ

0 голосов
/ 05 сентября 2018

Я считаю, что это дает вам то, что вы ищете (один из многих способов):

SELECT t.diapason, COUNT(*) AS 'number_of_users'
FROM (SELECT CASE  
    when amount<100 then '0-100' 
    when amount>=100 then '100 +' END AS diapason
    FROM 
        (SELECT SUM(amount) AS amount 
        FROM payments 
        INNER JOIN (SELECT DISTINCT user_id FROM activity where login_time between '2012-04-05' and '2012-04-12') AS a ON payments.user_id = a.user_id
        GROUP BY payments.user_id) AS P
      ) t
GROUP BY t.diapason
  ORDER BY number_of_users desc
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...