Sql 特定天数内已售出产品的计数
我陷入了那个问题Sql 特定天数内已售出产品的计数,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,我陷入了那个问题 CustomerId | EmployeeID | OrderDate| 1 2 2013-01-01 2 2 2013-01-01 2 2 2013-01-02 3 1 2013-02-14 3 2 2013-01-02 4 2
CustomerId | EmployeeID | OrderDate|
1 2 2013-01-01
2 2 2013-01-01
2 2 2013-01-02
3 1 2013-02-14
3 2 2013-01-02
4 2 2013-01-03
5 2 2013-01-04
6 2 2013-01-06
7 2 2013-01-05
我不知道该怎么问,但我希望我会尽力
我想了解哪位员工在3天内销售了多少产品例如:EmployeID 2在
2013-01-01,2013-01-01 = 1. day (2 sells)
2013-01-02 = 2.day (2 sell)
2013-01-03 = 3.day (1 sell)
所以我们可以看到Employe在3天内销售了5种产品。及
2013-01-04 = 1.day (1 sell)
2013-01-05 = 2.day (1 sell)
2013-01-06 = 3.day (1 sell)
Employe在另外3天内又卖出了3台。所以输出表看起来像
EmployeID | SoldProductIn3Days|
2 5
2 3
如何在t-sql中查询此问题?已更改答案以满足注释的要求
DECLARE @MySales AS TABLE
(
CustomerID INT
,EmployeeID INT
,OrderDate DATE
);
WITH Sales
AS ( SELECT OrderDate
,EmployeeID
,ROW_NUMBER() OVER ( PARTITION BY employeeid ORDER BY OrderDate ) AS RowNum
FROM @MySales),
SalesCalc
AS ( SELECT OrderDate
,EmployeeID
,CONVERT(INT, Rownum / 3.01) AS MyGrouping
FROM Sales)
SELECT EmployeeID, MyGrouping, COUNT(*)
FROM SalesCalc
GROUP BY EmployeeID, MyGrouping
我使用了表变量来模拟您的表,但只需取出我的表变量并将表放在其中即可。这应该能奏效。当我将RowNumber除以3.1时,前3天的结果是0,0,0,接下来3天的结果是1,1,1,依此类推,最后所有的数据都被分组统计。哪3天?员工ID
EmployeeID
=1如何?任何3天,员工ID=1只在2013-02-14销售,因此只有1天。我只关心等于3的天数。这3天需要连续吗?是的,因为我想我们只能理解天数是3。您的要求还不清楚。试着一步一步地解释更详细的内容。谢谢你的回答,但是,不,我的问题不是关于这个。然后你澄清你的问题,你到底需要什么?我已经做了,请阅读我问题的评论,你会得到它的。对于任何员工,我需要在任何3天内销售最多的产品。他正在销售一些东西。这应该是您要求的