现有某乎问答创作者回答情况表answer_tb如下(其中answer_date表示创作日期、author_id指创作者编号、issue_id表示问题id、char_len表示回答字数):
请你统计11月份日人均回答量(回答问题数量/答题人数),按回答日期排序,结果保留两位小数,以上例子的输出结果如下:
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(issue_id)/count(distinct author_id),2) from answer_tb group by answer_date
【难度】:简单
【场景】:日人均回答量
【分类】:分组查询、日期函数
难点:
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
select date(answer_date) 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 1;
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;
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
select answer_date ,round(count(issue_id)/count(distinct author_id),2) from answer_tb group by 1 order by 1;