简体   繁体   English

复杂的SQL查询(COUNT,DISTINCT,大小写,LEFT OUTER JOIN)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM