2016-11-22 5 views
0

Я написал два запроса mysql, один из которых позволяет мне регистрировать всех пользователей (зарегистрированных) в конкретный месяц в году, а другой - активных пользователей в этом конкретном месяце. Мне нужно найти число неактивных пользователей за этот год. Для этого я думал о вычитании столбцов totalUsers и activeUsers, полученных через два отдельных запроса. Ниже приведены запросыВычесть результаты двух запросов в Mysql

1. Fetch Total Registered users 

set @numberOfUsers := 0; 
SELECT T.createdMonth, T.monthlyusers, (@numberOfUsers := @numberOfUsers + T.monthlyusers) as totalUsers 
FROM 
(
SELECT month(from_unixtime(u.createdDate)) as createdMonth, count(u.id) as monthlyusers 
FROM user u 
where year(from_unixtime(u.createdDate)) = '2016' 
group by month(from_unixtime(u.createdDate))  
) T; 

2. Fetch Active Users 

select month(from_unixtime(lastActive)), (count(u.id)) as activeUsers from user u 
where year(from_unixtime(lastActive)) = '2016' 
group by month(from_unixtime(lastActive)); 

мне нужно вычесть из activeUsers totalUsers. Как мне это достичь?

+0

Нашли StackOverflow ответ, который отвечает, что [здесь] (http://stackoverflow.com/questions/6715095/how-to-sum-and-subtract -Использование-SQL). – IAMZERG

ответ

1

вы можете просто вычесть два запроса или слияния

select (select query) - (select query); 

SET @numberOfUsers := 0; 

SELECT l.totalUsers-a.monthlyusers FROM (SELECT T.createdMonth, 
T.monthlyusers, (@numberOfUsers := @numberOfUsers + T.monthlyusers) AS totalUsers 
FROM 
(
SELECT MONTH(FROM_UNIXTIME(u.createdDate)) AS createdMonth, COUNT(u.id) AS monthlyusers 
FROM USER u 
WHERE YEAR(FROM_UNIXTIME(u.createdDate)) = '2016' 
GROUP BY MONTH(FROM_UNIXTIME(u.createdDate))  
) T) l,(SELECT MONTH(FROM_UNIXTIME(lastActive)), (COUNT(u.id)) AS activeUsers FROM USER u 
WHERE YEAR(FROM_UNIXTIME(lastActive)) = '2016' 
GROUP BY MONTH(FROM_UNIXTIME(lastActive))) a ; 
+0

Мне нужно иметь столбец месяца как есть и вычесть только активные пользователи с totalUsers, а также иметь инструкцию «set» не позволяет слить – gameOne

+0

, вы можете включить другой coloum также в этот запрос, но это сделает ваш запрос lil bit slow –

+0

cool i получил результат, который я искал. благодаря – gameOne