首页 > 试题广场 >

某乎问答回答过教育类问题的用户里有多少用户回答过职场类问题

[编程题]某乎问答回答过教育类问题的用户里有多少用户回答过职场类问题
  • 热度指数:20347 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
现有某乎问答题目信息表issue_tb如下(其中issue_id代表问题编号,issue_type表示问题类型):
issue_id issue_type
E001 Education
E002 Education
E003 Education
C001 Career
C002 Career
C003 Career
C004 Career
P001 Psychology
P002 Psychology
创作者回答情况表answer_tb如下(其中answer_date表示创作日期、author_id指创作者编号、issue_id指回答问题编号、char_len表示回答字数):
answer_date author_id issue_id char_len
2021-11-01 101 E001 150
2021-11-01
101 E002 200
2021-11-01
102 C003 50
2021-11-01
103 P001 35
2021-11-01
104 C003 120
2021-11-01
105 P001 125
2021-11-01
102 P002 105
2021-11-02
101 P001 201
2021-11-02
110 C002 200
2021-11-02
110 C001 225
2021-11-02
110 C002 220
2021-11-03
101 C002 180
2021-11-04
109 E003 130
2021-11-04
109 E001 123
2021-11-05
108 C001 160
2021-11-05
108 C002 120
2021-11-05
110 P001 180
2021-11-05
106 P002 45
2021-11-05
107 E003 56
请你统计回答过教育类问题的用户里有多少用户回答过职场类问题,以上例子的输出结果如下:
num
1

示例1

输入

drop table if exists issue_tb;
CREATE TABLE issue_tb(
issue_id char(10) NOT NULL, 
issue_type char(10) NOT NULL);
INSERT INTO issue_tb VALUES('E001' ,'Education');
INSERT INTO issue_tb VALUES('E002' ,'Education');
INSERT INTO issue_tb VALUES('E003' ,'Education');
INSERT INTO issue_tb VALUES('C001', 'Career');
INSERT INTO issue_tb VALUES('C002', 'Career');
INSERT INTO issue_tb VALUES('C003', 'Career');
INSERT INTO issue_tb VALUES('C004', 'Career');
INSERT INTO issue_tb VALUES('P001' ,'Psychology');
INSERT INTO issue_tb VALUES('P002' ,'Psychology');

drop table if exists answer_tb;
CREATE TABLE answer_tb(
answer_date date NOT NULL, 
author_id int(10) NOT NULL,
issue_id char(10) NOT NULL,
char_len int(10) NOT NULL);
INSERT INTO answer_tb VALUES('2021-11-1', 101, 'E001' ,150);
INSERT INTO answer_tb VALUES('2021-11-1', 101, 'E002', 200);
INSERT INTO answer_tb VALUES('2021-11-1',102, 'C003' ,50);
INSERT INTO answer_tb VALUES('2021-11-1' ,103, 'P001', 35);
INSERT INTO answer_tb VALUES('2021-11-1', 104, 'C003', 120);
INSERT INTO answer_tb VALUES('2021-11-1' ,105, 'P001', 125);
INSERT INTO answer_tb VALUES('2021-11-1' , 102, 'P002', 105);
INSERT INTO answer_tb VALUES('2021-11-2',  101, 'P001' ,201);
INSERT INTO answer_tb VALUES('2021-11-2',  110, 'C002', 200);
INSERT INTO answer_tb VALUES('2021-11-2',  110, 'C001', 225);
INSERT INTO answer_tb VALUES('2021-11-2' , 110, 'C002', 220);
INSERT INTO answer_tb VALUES('2021-11-3', 101, 'C002', 180);
INSERT INTO answer_tb VALUES('2021-11-4' ,109, 'E003', 130);
INSERT INTO answer_tb VALUES('2021-11-4', 109, 'E001',123);
INSERT INTO answer_tb VALUES('2021-11-5', 108, 'C001',160);
INSERT INTO answer_tb VALUES('2021-11-5', 108, 'C002', 120);
INSERT INTO answer_tb VALUES('2021-11-5', 110, 'P001', 180);
INSERT INTO answer_tb VALUES('2021-11-5' , 106, 'P002' , 45);
INSERT INTO answer_tb VALUES('2021-11-5' , 107, 'E003', 56);

输出

1
头像 牛客420100019号
发表于 2021-12-23 17:47:24
解法1:正常解法,教育类问题id inner join 职场类问题id(记得加distinct) select count(distinct author_id) num  from issue_tb t1  j 展开全文
头像 烛少
发表于 2022-01-19 15:04:17
本题是比较经典的运用题,现实工作中比较常见,思路和方法有很多,以下仅供参考: 方法一:使用group_concat函数,找出由author_id分组合并issue_type后的字符串中同时包含'Education'和'Career'的人数。需要使用locate函数,当字符串不存在于给定的字符中时,结 展开全文
头像 Alex_John
发表于 2022-01-17 14:48:16
题意 给你一张题目信息表,一个回答情况表,请你查询出其中回答过教育类问题的用户中,回答过职场问题的用户数量 思路: 因为在统计前,我们需要对用户回答过的问题类型进行限制,而这个限制本身又有个条件(即在回答过教育类的用户中去查询) 因此我们首先应该为这个限制,获取对应的记录,因此我们需要先查询出所有 展开全文
头像 盐咸咸
发表于 2022-04-12 12:37:46
分3步走: 1)关联两张表,建立包含文章类型(issue_type)字段的表 2)查找文章类型为'Education'的回答详情 3)查找回答过'Career'类型文章的用户,统计满足这两个条件的用户数。 WITH t1 AS( SELECT au 展开全文
头像 阿翟啊
发表于 2021-11-30 15:50:13
select count(distinct author_id) from answer_tb where issue_id in (select issue_id from issue_tb where issue_ 展开全文
头像 ccc不叫444
发表于 2022-05-07 16:11:42
# 个人认为比子查询更好理解的解法: 题目:有e的用户也有c,那就是一个“在a表也在b表”的问题 这类问题的模板解法,就是a left join b,然后把b表中匹配不上的那一部分null,用WHERE IS NOT NULL 去掉,剩下的就是“在a表也在b表”了 SELECT&nbs 展开全文
头像 酸菜鱼土豆大侠
发表于 2022-11-01 21:13:08
【难度】:简单 【分类】:子查询 分析思路 难点: 1.如何使用in子查询 (1)统计回答过教育类问题的用户 [条件]:where issue_type = 'Education' (2)统计回答过教育类问题的用户里有多少用户回答过职场类问题 [条件]:where issue_type 展开全文
头像 无上清颜
发表于 2022-02-19 10:50:57
先筛选出回答过Education的用户(子查询),在此基础上筛选回答过Career的用户 select count(distinct author_id) as num from issue_tb t join answer_tb t1 using(issue_id) where author_id 展开全文
头像 纯真的我求求offer
发表于 2023-08-23 22:18:36
select count(d.author_id) num from ( select author_id,count(issue_type) cnt from ( select issue_type,author_id from answer_tb a,issue_tb b wher 展开全文
头像 阿翟啊
发表于 2021-11-30 17:51:16
select count(distinct a.author_id) num from answer_tb a join answer_tb b on a.author_id = b.author_id where a.issue_id in (select issue_id 展开全文

问题信息

难度:
136条回答 810浏览

热门推荐

通过挑战的用户

查看代码
  • 二维码

    扫描二维码,关注牛客网

  • 二维码

    下载牛客APP,随时随地刷题