繁体   English   中英

计算SQL查询结果的出现次数

[英]Count occurency of SQL query results

我有一个MySQL数据库,其中包含一个名为“orders”的table其中包含我的所有订单。 在这张表中我有不同的字段,如:

id
userId  
dateOrder

我想获得所有按用户分组的订单,仅适用between 2 and 5订单的用户。

但我的SQL查询不起作用。 考虑这些条目:

id  userId dateOrder  
1    138    2013-03-19  
2    138    2013-03-19
3    222    2013-03-19

我想要一个SQL请求,它只选择由至少做过2个订单的用户制作的订单。

对于此示例,SQL应返回:

userId 138

我尝试使用带有DISTINCT GROUP BY ,但这些都不起作用。 你能帮我吗 ? 谢谢 !!

您应该能够使用HAVING子句来获得结果:

select userid
from orders
group by userid
having COUNT(*) >= 2
    and COUNT(*) <= 5

请参阅SQL Fiddle with Demo

如果您想要返回有关每个订单的所有详细信息,可以将查询扩展为:

select o1.id, o1.userid, o1.dateorder
from orders o1
where exists (select userid
              from orders o2
              where o1.userid = o2.userid
              group by userid
              having COUNT(*) >= 2
                  and COUNT(*) <= 5)

请参阅SQL Fiddle with Demo

我认为应该这样做......

Select * from orders where userid in
(
Select userid from orders
group by userid having count(1) between 2 and 5
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM