[英]Complex SQL query (COUNT, DISTINCT, case when, LEFT OUTER JOIN)
I have two tables 我有两张桌子
users: 用户:
+------------+-----------+
| user_id | company |
+------------+-----------+
| 1 | Apple |
| 2 | Microsoft |
+------------+-----------+
sessions: 会议:
+------------+---------+------------+-----------+------------+
| session_id | user_id | start_time | end_time | user_agent |
+------------+---------+------------+-----------+------------+
| 1 | 1 | 12:00:00 | 12:20:00 | X |
| 2 | 1 | 14:10:00 | 14:14:00 | Y |
+------------+---------+------------+-----------+------------+
I want to query both tables in one query and have an output that looks like this: 我想在一个查询中查询两个表,并具有如下所示的输出:
+------------+-----------+--------------------+
| user_id | company | unique_user_agents |
+------------+-----------+--------------------+
| 1 | Apple | 2 |
| 2 | Microsoft | 0 |
+------------+-----------+--------------------+
with a query like this: 带有这样的查询:
x
SELECT users.user_id, users.company_name, COUNT(DISTINCT (case when sessions.start_time >= '11:00:00' AND sessions.end_time <= '15:30:00' then sessions.user_agent)) FROM users GROUP BY users.user_id LEFT OUTER JOIN sessions ON users.user_id = sessions.user_id
however i'm getting errors about the syntax, i know that it's wrong but i can't rearrange to be successful. 但是我在语法方面遇到错误,我知道这是错误的,但是我无法重新安排以取得成功。
Any ideas? 有任何想法吗?
Case when always ends with an end
and the group by
has to be kept after all the joins 总是以
end
并且在所有联接之后必须保留group by
的情况
SELECT users.user_id, users.company_name, COUNT(DISTINCT case when sessions.start_time >= '11:00:00' AND sessions.end_time <= '15:30:00' then sessions.user_agent end)
FROM users
LEFT OUTER JOIN sessions
ON users.user_id = sessions.user_id
GROUP BY users.user_id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.