首页 > 试题广场 >

某乎问答11月份日人均回答量

[编程题]某乎问答11月份日人均回答量
  • 热度指数:18901 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
现有某乎问答创作者回答情况表answer_tb如下(其中answer_date表示创作日期、author_id指创作者编号、issue_id表示问题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
请你统计11月份日人均回答量(回答问题数量/答题人数),按回答日期排序,结果保留两位小数,以上例子的输出结果如下:
answer_date per_num
2021-11-01 1.40
2021-11-02
2.00
2021-11-03
1.00
2021-11-04
2.00
2021-11-05
1.25
示例1

输入

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);

输出

2021-11-01|1.40
2021-11-02|2.00
2021-11-03|1.00
2021-11-04|2.00
2021-11-05|1.25
这题有bug,同一用户在一天内回答了同一个问题两次,竟然也算两个问题
发表于 2022-04-08 19:04:41 回复(3)
知识点一:
round(number,digits)
number,要四舍五入的数,digits是要小数点后保留的位数
如果 digits 大于 0,则四舍五入到指定的小数位。
如果 digits 等于 0,则四舍五入到最接近的整数。
如果 digits 小于 0,则在小数点左侧进行四舍五入。
如果round函数只有参数number,等同于digits 等于 0。
知识点二:
count( ):用于计数;
distinct( ):去重;
select answer_date,round(count(issue_id)/count(distinct author_id),2)
from answer_tb
group by answer_date


发表于 2021-11-30 15:15:34 回复(0)

【难度】:简单

【场景】:日人均回答量

【分类】:分组查询、日期函数

分析思路

难点:

1.回答问题数量不去重;答题人数去重

(1)统计11月份日人均回答量(回答问题数量/答题人数),按回答日期排序

注:进入是增加一个在线人数,出去是减少一个在线人数

  • [条件]:month(answer_date) = 11

  • [使用]:count(); month()

最终结果

select 查询结果 [创作日期;日人均回答量]
from 从哪张表中查询数据 [创作者回答情况表]
where 查询条件 [11月份]
group by 分组条件 [创作日期]
order by 对查询结果排序 [创作日期];

求解代码

方法一

case when

select
    answer_date,
    round(count(issue_id)/count(distinct author_id),2) as per_num
from answer_tb
where month(answer_date) = 11
group by answer_date
order by answer_date
发表于 2022-11-01 16:17:30 回复(0)
select answer_date,round(count(issue_id)/count(distinct author_id),2) per_num
from answer_tb
where month(answer_date) = 11
group by answer_date
order by answer_date
#人均,人是distinct的

发表于 2021-12-15 19:36:18 回复(0)
select answer_date, round(count(issue_id)/count(distinct author_id),2) per_num
from answer_tb
group by answer_date
order by answer_date 
发表于 2022-01-13 18:55:56 回复(0)
select
    answer_date,
    round(count(issue_id)/count(distinct author_id),2) per_num
from
    answer_tb
group by
    answer_date
order by
    answer_date

编辑于 2024-04-21 09:34:55 回复(0)
select
    answer_date
    ,round(count(issue_id)/count(distinct author_id),2) as per_num
from answer_tb
where date(answer_date) between '2021-11-01' and '2021-11-30'
group by answer_date

发表于 2023-11-30 10:22:35 回复(0)
select answer_date,
round(count(issue_id)/count(distinct author_id),2) as per_num
from answer_tb
group by answer_date
order by answer_date

发表于 2023-10-10 10:19:37 回复(0)
真正的简单题,我哭死,前面简单做得我都自闭了
发表于 2023-09-13 18:37:38 回复(0)
select
    answer_date,
    round(count(issue_id) / count(distinct author_id), 2) as per_num
from
    answer_tb
group by
    answer_date

发表于 2023-09-12 09:50:21 回复(0)
select
answer_date,
round(count(issue_id)/count(distinct author_id),2) per_num
from
answer_tb
where date_format(answer_date,'%Y-%m')='2021-11'
group by answer_date
发表于 2023-08-21 21:17:39 回复(0)
-- 请你统计11月份日人均回答量(回答问题数量/答题人数),按回答日期排序,结果保留两位小数,以上例子的输出结果如下:

select 
answer_date,
round( count(issue_id)/count(distinct author_id),2) as per_num
from answer_tb
group by answer_date
order by 1;

发表于 2023-08-11 16:41:12 回复(0)
select
    date (answer_date) dt,
    round(count(issue_id)/count(distinct author_id),2) per_num
from
    answer_tb
group by dt
order by dt;

发表于 2023-08-10 17:46:31 回复(0)
select 
answer_date,
round(count(author_id)/count(distinct author_id),2)
from
answer_tb
where month(answer_date)=11
group by answer_date	
order by 
answer_date

发表于 2023-08-10 15:21:28 回复(0)
select answer_date,round(count(issue_id)/count(distinct author_id),2)
from answer_tb
where month(answer_date)='11'
group by answer_date

发表于 2023-08-08 17:00:28 回复(0)
#问题不去重
select answer_date
       ,round(count(issue_id)/count(distinct author_id),2) as per_num
from answer_tb
group by answer_date
order by answer_date
发表于 2023-06-25 15:39:38 回复(0)
select
    answer_date,
    round(count(issue_id) / count(distinct (author_id)), 2) as per_num
from
    answer_tb
group by
    answer_date
order by
    answer_date asc

发表于 2023-05-05 13:38:39 回复(0)
select answer_date,
    round(count(issue_id)/count(distinct author_id),2) as per_num
from answer_tb
where date_format(answer_date,"%Y-%m")="2021-11"
group by answer_date
order by answer_date;
发表于 2023-04-21 15:40:03 回复(0)
#bbzz

select answer_date, round(count(issue_id)/count(distinct author_id),2)

from answer_tb
group by answer_date

发表于 2023-04-20 16:55:33 回复(0)
求人均回答问题次数吧,一道题同一天答多次计算多次
发表于 2023-04-19 18:36:12 回复(0)

问题信息

难度:
67条回答 2048浏览

热门推荐

通过挑战的用户

查看代码
  • 二维码

    扫描二维码,关注牛客网

  • 二维码

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