【场景】:大小写转换
【分类】:字符串函数、upper()
分析思路
难点:
1.相同表做连接搜索不同的值
(1)统计被作答的试卷的类型和作答次数
(2)筛选出试卷作答数小于3的类别tag,统计将其转换为大写后对应的原本试卷作答数
-
[条件]:where a.answer_cnt <3 and upper(a.tag)!= a.tag。
-
[使用]:join 连接条件:upper(a.tag) = b.tag。需要查询出转换大写后的作答次数,如果转换后tag并没有发生变化,不输出该条结果。
扩展:
前往查看:***********
求解代码
方法一:
表与自身做连接 + upper()
#被作答的试卷的类型和作答次数
with
main as(
select
tag,
count(start_time) as answer_cnt
from examination_info
join exam_record using(exam_id)
group by tag
)
#筛选出试卷作答数小于3的类别tag,统计将其转换为大写后对应的原本试卷作答数
select
a.tag,
b.answer_cnt
from main a
join main b on upper(a.tag) = b.tag
where a.answer_cnt <3 and upper(a.tag)!= a.tag