У меня сложный запрос, и теперь мне нужно разделить результат этого запроса на данные из другой таблицы. Б/у СОЮЗ. Это правильно? Почему я не работаю?
SELECT * from (select IFnull(t.diapason,'total') as diapason, count(distinct
user_id) / total_visitors*100 AS 'percent_of_users'
FROM
(SELECT p.user_id, p.amount as total, CASE
when amount<10 then '0-10'
when amount>=10 then '10 +' END AS diapason
FROM
(SELECT payments.user_id, SUM(amount) AS amount
FROM payments INNER JOIN
(SELECT DISTINCT user_id, login_time FROM activity where login_time
between '2018-04-12' and '2018-04-18') a
ON payments.user_id = a.user_id and a.login_time = payments.payment_time
GROUP BY payments.user_id) p
) t
GROUP BY diapason WITH ROLLUP) as t1
UNION
SELECT COUNT(distinct user_id) as total_visitors FROM activity where
login_time between '2018-04-12' and '2018-04-18'
ORDER BY percent_of_users desc;
Я сделал UNION, потому что мне нужно получить total_visitors.
Спасибо!
Результат
diapason percent_of_visitors
0-10 ...%
10+ ...%
Рассчитать процент_посетителей (новое значение activity.user_id / старое значение activity.user_id).
Но я не знаю, как получить доступ к старому значению. Можете ли вы дать мне подсказки?
total_visitors
работает) новый вопрос, и вы должны задать новый (вы можете оставить мне ссылку на него здесь, если хотите), он лишь незначительно связан с вашим первоначальным вопросом и конкретно с ответом . Так что задайте новый, это не проблема, и на самом деле рекомендуется поддерживать чистоту вопросов. Включите некоторые образцы данных (ввод, результат, который вы получаете, результат, который вы хотите) и попытайтесь уменьшить его до необходимого минимума (t1
?), например. вы можете опустить части, связанные сtotal_visitors
, так как теперь вы (надеюсь) знаете, как включить его в измененный код. 07.09.2018