En utilisant sql server 2005, essayez ceci.
DECLARE @Table TABLE(
ID INT,
Date DATETIME,
Ref VARCHAR(MAX)
)
INSERT INTO @Table (ID,Date,Ref) SELECT 1, '01 Sep 2008', 'A'
INSERT INTO @Table (ID,Date,Ref) SELECT 1, '11 Sep 2008', 'A'
INSERT INTO @Table (ID,Date,Ref) SELECT 1, '01 Oct 2008', 'A'
INSERT INTO @Table (ID,Date,Ref) SELECT 2, '01 Sep 2008', 'A'
INSERT INTO @Table (ID,Date,Ref) SELECT 2, '01 Oct 2008', 'A'
INSERT INTO @Table (ID,Date,Ref) SELECT 2, '01 Nov 2008', 'B'
INSERT INTO @Table (ID,Date,Ref) SELECT 2, '01 Dec 2008', 'B'
;WITH Ordered AS (
SELECT ID,
Ref,
Date,
ROW_NUMBER() OVER (PARTITION BY ID, Ref ORDER BY Date) SubNumber
FROM @Table t
)
SELECT Ordered.ID,
Ordered.Ref,
AVG(DATEDIFF(dd, Ordered.Date, OrderedNext.Date)) AVG_Days
FROM Ordered INNER JOIN
Ordered OrderedNext ON Ordered.ID = OrderedNext.ID
AND Ordered.Ref = OrderedNext.Ref
AND Ordered.SubNumber + 1 = OrderedNext.SubNumber
GROUP BY Ordered.ID,
Ordered.Ref
ont également un coup d'oeil mathématiquement:
Disons que
([X (1) -X (0)] + [X (2) -X (1)] + [X (3) -X (2)] + ... + [X (n-1) -X (n-2)] + [X (n) -X (n-1)])/(n- 1).
agrandir la partie supérieure comme
-X (0) + X (1) - X (1) + X (2) - X (2) + X (3) - ... - X (n-2) + X (n-1) - X (n-1) + X (n)
whcih finissent comme -X (0) + X (n)
nous avons donc [X (n) - X (0)]/(n - 1)
alors prenez (MAX - MIN)/(chef - 1) pour le nombre> 1
S'il vous plaît essayez de reformater votre question pour mieux lire. Homme! Ça fait vraiment mal! – Galilyou
A besoin de savoir quel type de SQL – Dave
re formaté, des excuses. Microsoft SQL Server –