Sql server 仅当出现的次数超过X次时才选择
我的数据是这样的:Sql server 仅当出现的次数超过X次时才选择,sql-server,tsql,Sql Server,Tsql,我的数据是这样的: Client Number | Order Date | Order Amount | Sequence (created with Row_Number()) 我已经用Row_Number()创建了一个序列,因此我可以看到一个客户机有多少订单 如果我使用WHERE Sequence>3,我将丢失3之前的订单。我不能用有,因为我需要看每一份订单。如何选择订单超过3个的客户编号 我想看看: Client Number | Order Date | Order Amount |
Client Number | Order Date | Order Amount | Sequence (created with Row_Number())
我已经用Row_Number()创建了一个序列,因此我可以看到一个客户机有多少订单
如果我使用WHERE Sequence>3,我将丢失3之前的订单。我不能用有,因为我需要看每一份订单。如何选择订单超过3个的客户编号
我想看看:
Client Number | Order Date | Order Amount | Sequence
1111 Jan 01 100 1
1111 Jan 02 100 2
1111 Jan 03 100 3
1112 Jan 01 100 1
1112 ... ... ...
1112 Jan 20 100 20
因此,只有那些序列高于3的人,同时仍然保持序列1和序列2的序列。这很容易。。。非常感谢你!
SELECT *
FROM data
WHERE ClientNumber IN
(
SELECT ClientNumber
FROM data
GROUP BY ClientNumber
HAVING COUNT(1) >= 3
);
create table #test(clientnumber int, orderdate datetime, orderamount int)
insert into #test values
(1110, '01/01/2016', 100),
(1110, '01/02/2016', 100),
(1111, '01/01/2016', 100),
(1111, '01/02/2016', 100),
(1111, '01/03/2016', 100),
(1112, '01/01/2016', 100),
(1112, '01/02/2016', 100),
(1112, '01/03/2016', 100),
(1112, '01/04/2016', 100);
with cte as(
select clientnumber, orderdate, orderamount,
count(*) over(partition by clientnumber ) as ran
from #test)
select * from cte
where ran >= 3