entityOne sql 练习

今天看博客的时候看到一个很有意思的面试题 于是就做了 题是这样的
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
 
 

最后大家有没有好的方法呢!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值