今天看博客的时候看到一个很有意思的面试题 于是就做了 题是这样的
1,有user表记录了系统中的用户信息
user_id user_name province city
1 ebola 辽宁省 沈阳市
2 camus 辽宁省 大连市
3 leon 辽宁省 大连市
4 tyler 辽宁省 沈阳市
5 oven 辽宁省 大连市
6 susie 吉林省 长春市
7 nancy 吉林省 吉林市
8 lucy 吉林省 四平市
9 tom 河北省 石家庄市
10 lily 河北省 秦皇岛市
11 wendy 河北省 保定市
12 andy 河北省 唐山市
13 hard 河北省 张家口市
14 vance 河北省 廊坊市
请写SQL查询表中的满足以下要求的省份
1、 不少于5个用户
2、 省份所属用户属于至少3个城市
例如:
辽宁省 不满足第二个条件,只属于沈阳市大连市两个城市
吉林省 不满足第一个条件,只有3个用户
河北省 满足第一个条件有6个用户满足第二个条件 有6个城市
【深度考察sql能力,以面试的紧张情形,目前只有一个人答出来,是一个做过dba的开发】
。。。嗯表很简单 数据也很简单 但问的.。。。。
先看下结果
答案:
select tt.* from t2 tt join
(select count(1) as prCount,province from (
select count(tt.province), tt.province from t2 tt join (
select count(1) as prCount,province,count(name) as naCount from t2 t group by province HAVING prCount> 2 and naCount>3 ) t
on tt.province=t.province group by tt.province,city ) tt group by tt.province HAVING prCount> 3) ts on tt.province=ts.province
最后大家有没有好的方法呢!!!