استعلام SQL لمجموعة Datediff أكبر من القيمة المعطاة

StackOverflow https://stackoverflow.com/questions/2135075

  •  22-09-2019
  •  | 
  •  

سؤال

لدي جدول تسجيل يستخدم للجهاز "نبضات القلب". لدي أجهزة الشبكة هذه التي تسوق/نبضات القلب مع الخادم كل 10 دقائق. نريد إحصائيات حول وقت تفويت وقت تسجيل الوصول المجدول. لدي استعلام يمكنه القيام بذلك على أساس كل جهاز ، لكنني بحاجة إلى تعديله للتعامل مع جميع الأجهزة.

يبدو أن طاولة نبضات القلب:

CREATE TABLE [dbo].[DeviceHeartbeat](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [DeviceId] [int] NULL,
    [CheckinTime] [datetime] NULL,
    [Runtime] [int] NULL,
PRIMARY KEY CLUSTERED 
([Id] ASC)) ON [PRIMARY]

يتحقق الجهاز من الخادم ، ويضيف الخادم صفًا إلى هذا الجدول بمعرفه ، و CheckIntime ووقت تشغيل الجهاز (قيمة الأجهزة المرسلة بواسطة الجهاز). الاستعلام الذي لدي حاليا يبدو مثل هذا:

WITH t AS
(
  SELECT Checkintime, rn = ROW_NUMBER() OVER (ORDER BY Checkintime)
  FROM DeviceHeartbeat
  WHERE DeviceId = 1112
),
x AS
(
  SELECT d = DATEDIFF(MINUTE, t1.Checkintime, t2.Checkintime)
  FROM t AS t1
  INNER JOIN t AS t2
  ON t1.rn = t2.rn - 1
),
y AS
(
  SELECT stats = CASE WHEN d < 10 THEN ' < 10 '
    WHEN d BETWEEN 10 AND 11 THEN '10 - 11 '
    WHEN d BETWEEN 11 AND 12 THEN '11 - 12 '
    ELSE '+12 ' END + ' minutes:'
  FROM x
)
SELECT stats, COUNT(*) FROM y GROUP BY stats;

يقتصر هذا الاستعلام على جهاز واحد محدد. نتائج مثال تبدو هكذا:

stats                  
----------------- ---- 
 < 10  minutes:   1536
10 - 11  minutes: 425
11 - 12  minutes: 952
+12  minutes:     160

من الناحية المثالية ، أنا مهتم فقط بالتحققات التي تزيد عن 12 دقيقة. لذلك ، ما كنت أريده هو قائمة بالأجهزة التي لديها تسجيلات أكبر من 12 دقيقة ، والتي طلبها تهمهم. سيسمح لي هذا برؤية أفضل 10 أو 20 جهازًا تزيد عن 12 دقيقة من أوقات تسجيل الوصول ، مما ينبه إلى أجهزة المشكلات. شيء مثل:

DeviceId   CheckinsOver12Mins
---------- -------------------
1112       160
1108       152
15         114
106        86

اقتراحات؟

هل كانت مفيدة؟

المحلول

نطاق القاعدة:

  • إذا قمت بتعريفها في خدمة البحث، فستكون صالحة للجميع WebApplications المرتبطة بخدمة البحث هذه.

  • إذا قمت بتحديده على مستوى موقع فرعي / ويب، صالحه للسياق البحث المحرز على هذا الموقع.

  • إذا قمت بتعريفه على مجموعة الموقع صالح للموقع وجميع المواقع الفرعية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top