题目:
很简单,有一个订单表,两个字段,orderid和userid,订单id和用户id,清查出用户下的订单数大于3条记录的用户。
比如:orderid,userid
1 1
2 1
3 1
4 1
1 2
2 2
1 3
2 3
3 3
4 3
5 3此时查出的数据应为userid
1
3惭愧,没有写出来,请朋友们帮写一下,谢谢了
很简单,有一个订单表,两个字段,orderid和userid,订单id和用户id,清查出用户下的订单数大于3条记录的用户。
比如:orderid,userid
1 1
2 1
3 1
4 1
1 2
2 2
1 3
2 3
3 3
4 3
5 3此时查出的数据应为userid
1
3惭愧,没有写出来,请朋友们帮写一下,谢谢了
select userid
from 订单表
group by userid
having count(1)>3;
userid
1
3还有名字相同的信息,userid应不是名字,而你的名字指的什么,用户表中的名称,通过userid来关联?
orderid userid
1 1
2 1
3 1
1 2
2 2
1 3
2 3
3 3
orderid userid
1 1
2 1
3 1
1 2
2 2
1 3
2 3
3 3
一条大于3的记录都没有把你的记录全录进去试下
1 1
2 1
3 1
4 1
1 2
2 2
1 3
2 3
3 3
4 3
5 3
另外count(1)是把所有的字段都进行统计么,我使用的count(userid),这样比较容易理解一些
count(*)当然是对的,和count(1)效果一样,不过应是count(1)快吧
这些可自行试下,不清楚再问吧
count(*) 和count(1)一样快的
from (select userid,row_number() over (partition by userid order by userid) rn
from 订单表) t
where rn=4;