趣味SQL | 如何利用SQL巧解公务员考试逻辑题

目录

0 需求描述

1 数据准备 

​编辑

2 问题分析

 3 小结

想要进一步了解SQL这门艺术语言的,可以订阅我的专栏数字化建设通关指南,将在该专栏进行详细解析。

专栏 原价99,现在活动价39.9,按照阶梯式增长,还差3个名额将上升至59.9,直到恢复原价。

数字化建设通关指南


0 需求描述

逻辑测试题
A、B两男士好奇问C女士年龄
C 女士给出 11个可能答案:
35、36、38.
42、45、46.
51、55、57、
61、62.
C将十位数告诉 A,将个位数告诉 B。
A 说:我不知道℃女士年龄,B也不知道。
B 说:原本我不知道的,但现在知道了!
A 说:现在我也知道了!
请问C女士年龄是多少?

1 数据准备 

with test as (
select 3 m,5 n union all 
select 3 m,6 n union all
select 3 m,8 n union all 
select 4 m,2 n union all 
select 4 m,5 n union all 
select 4 m,6 n union all 
select 5 m,1 n union all 
select 5 m,5 n union all 
select 5 m,7 n union all 
select 6 m,1 n union all 
select 6 m,2 n )

2 问题分析

逻辑分析:

 第一句话:如果给B的是8或7,B一定知道是38或57。因为8和7是唯一的不重复的。同时A确认B不知道结果,所以A一定不是3或8,排除后剩余:42 45 46 61 62

原因:如果是4或2。B就有可能拿到8或7,A就无法肯定B不知道。

第二句话: B说他知道了,排除后剩余:45,46 ,61,

原因:如果B拿到了2,他分不清是42还是62。

第三句话 a说他也知道了,答案一定是61,

原因:如果他拿到了4,就分不清是45还是46。

具体SQL如下:

with g1 as (
select * from test t1
where not exists (
select 1 from test t2 
where t2.m=t1.m and (
select count(*) from test t3 where t3.n=t2.n)=1)
)
,g2 as (
select * from g1 
where (select count(*) from g1 g12 where g12.n=g1.n)=1
)
,g3 as (
select * from g2
where (select count(*)from g2 g22 where g22.m=g2.m)=1
 )
select * from g3

 3 小结

想要进一步了解SQL这门艺术语言的,可以订阅我的专栏数字化建设通关指南,将在该专栏进行详细解析。

专栏 原价99,现在活动价39.9,按照阶梯式增长,还差3个名额将上升至59.9,直到恢复原价。


数字化建设通关指南

主要内容:
(1)SQL进阶实战技巧

可以参考如下教程,具体链接如下

SQL很简单,可你却写不好?也许这才是SQL最好的教程

上面链接中的文章及技巧会不定期更新。

(2)数仓建模实战技巧和个人心得

       1)新人入职新公司后应如何快速了解业务?

       2)以业务视角看宽表化建设?

       3)  维度建模 or 关系型建模?

       4)业务模型与数据模型有什么区别?业务阶段的模型该如何建设?

       5)业务指标体系该如何建设?指标体系该如何维护?指标平台应如何建设?指标体系                           该由谁来搭建?

       6)如何优雅设计DWS层?DWS层模型好坏该如何评价?

       7)指标发生异常,该如何排查?应从哪些方面入手寻找问题点?

       8) 数据架构的选择,mpp or hadoop?

       9)数仓团队应如何体现自己的业务价值,讲好数据故事?

       10)BI与大数据有什么关系?BI与信息化、数字化之间有什么关系?BI与报表之间的关                          系?

       11)数据部门如何与业务部门沟通,并规划指引业务需求?

文章不限于以上内容,有新的想法也会及时更新到该专栏。

具体专栏链接如下:

数字化建设通关指南_莫叫石榴姐的博客-CSDN博客

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值