我遇到了mysql查询。无法继续。
我有2个表,其中记录了用户的登录时间。当表中的任何一个包含条目时,应该考虑登录时间。我想查找一个月的用户登录总和。
我可以到达这里。但无法理解如何获得总和
select table1.employeeId
, date(table1.loginTime) as date1
, date(table2.loginTime) as date2
from table1
inner join table2 on table1.employeeId=table2.employeeId
and table1.loginTime>='2017-01-01 00:00:00'
and table1.loginTime<='2017-01-31 23:59:59'
and table2.loginTime>='2017-01-01 00:00:00'
and table2.loginTime<='2017-01-31 23:59:59'
例如:count = 0
employe1已记录
2017年1月1日在table1&amp; table2&lt; - count ++(如果他登录2个表,那么只应考虑1个计数)
2017年1月2日在table1&lt; - count ++
中因此,对于employee1计数为2
答案 0 :(得分:1)
你可以用外连接做到这一点,但它会不必要地复杂:
select employeeId
, count(*) as loginCount
from ( select employeeId
, loginTime
from table1
where loginTime between '2017-01-01 00:00:00'
and '2017-01-31 23:59:59'
union
select employeeId
, loginTime
from table2
where loginTime between '2017-01-01 00:00:00'
and '2017-01-31 23:59:59'
( as a
group by employeeId;
答案 1 :(得分:0)
另一种方法:
SELECT
employeeId,
COUNT(1)+
(
SELECT COUNT(1)
FROM TABLE2 T2
WHERE MONTH(T2.loginTime) = 1
AND YEAR(T2.loginTime) = 2017
AND T2.employeeId = T1.employeeId
)
AS LOGINTIMES
FROM
TABLE1 T1
WHERE MONTH(loginTime) = 1
AND YEAR(loginTime) = 2017
GROUP BY employeeId