首页 > 试题广场 >

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

[编程题]某乎问答11月份日人均回答量
  • 热度指数:25089 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
现有某乎问答创作者回答情况表answer_tb如下(其中answer_date表示创作日期、author_id指创作者编号、issue_id表示问题id、char_len表示回答字数):

请你统计11月份日人均回答量(回答问题数量/答题人数),按回答日期排序,结果保留两位小数,以上例子的输出结果如下:


示例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
select answer_date,round(count(author_id)/count(distinct author_id),2) as per_num
from answer_tb
group by answer_date
having date(answer_date) between '2021-11-01' and '2021-11-30'
order by answer_date
发表于 2025-06-30 08:57:32 回复(0)
SELECT answer_date, ROUND(COUNT(*)/COUNT(DISTINCT author_id), 2) AS per_cnt
FROM answer_tb
GROUP BY answer_date;
发表于 2025-04-09 21:31:11 回复(0)
select answer_date
,round(count( if(char_len>0,issue_id,null)) /count(distinct if(char_len>0,author_id,null)) ,2) per_num
from answer_tb
where date_format(answer_date ,"%Y-%m")="2021-11"
group by answer_date
order by answer_date
;
发表于 2024-07-11 17:10:21 回复(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
group by
    answer_date

发表于 2023-09-12 09:50:21 回复(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
    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)
#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)
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

发表于 2023-04-06 10:28:13 回复(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 ;
发表于 2023-03-29 19:51:13 回复(0)
坑:回答问题数量不需要去重,答题人数需要去重

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 asc



发表于 2023-03-29 15:15:09 回复(0)
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

发表于 2023-01-12 23:30:23 回复(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) as per_num
from answer_tb
group by answer_date
order by answer_date;

发表于 2022-10-27 13:21:23 回复(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


发表于 2022-09-03 17:39:38 回复(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
order by answer_date

发表于 2022-09-02 17:17:00 回复(0)
今天 SHEIN 笔试的 SQL 题,这么简单,我却因为没练过 SQL 题而做不出来,我恨啊。。。但做了这么多家笔试也只有这家编程题考 SQL 的。。。
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

发表于 2022-08-31 01:50:23 回复(0)