题解 | #某乎问答回答过教育类问题的用户里有多少用户回答过职场类问题#
某乎问答回答过教育类问题的用户里有多少用户回答过职场类问题
http://www.nowcoder.com/practice/b02cf9ee7b9f4cdda308f8155ff3415d
方法一
- 连接两个表格,筛选出只回答了教育和职场类的用户
- group by issue_type,author_id使得就算一个用户回答了多个教育或者职场问题,也只算作一个,因为这里是统计用户个数,接着order by author_id,将相同用户放在一起
- 利用窗口函数lead形成新的一列leadd,partition by author_id
- 上面三步形成新的表格t1,再统计leadd个数就好啦
select
count(leadd) as num
from
(select
issue_type,
author_id,
lead(issue_type,1) over (partition by author_id) as leadd
from issue_tb it
join answer_tb atb
on it.issue_id=atb.issue_id
where issue_type='Education' or issue_type='Career'
group by issue_type,author_id
order by author_id) t1
方法二
- 利用子查询
select
count(distinct author_id) as num
from issue_tb it
join answer_tb atb
on it.issue_id=atb.issue_id
where issue_type='Education'
and author_id in( select author_id
from issue_tb it
join answer_tb atb
on it.issue_id=atb.issue_id
where issue_type='Career' )