كيف يمكنني الحصول على كل n الصفوف في الخلية؟

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

  •  20-08-2019
  •  | 
  •  

سؤال

ولدي الجدول الذي يحتوي على تسجيل البيانات في كل دقيقة، لذلك لدي صف لكل دقيقة. عند عودته البيانات للتجهيز، مطلوب هذه الدقة ل6 ساعات الماضية ولكن بعد ذلك، وهو مستوى أقل من دقة غير كافية، على سبيل المثال كل 5 دقائق.

ويمكنني إرجاع كافة البيانات في صفيف ثم قم بإزالة كافة ولكن كل عنصر 5TH ولكن هذا يتطلب من جميع البيانات التي يتم إرجاعها بواسطة الخلية ومن ثم قراءة في مجموعة أولا - الكثير من البيانات

وكيف يمكن أن أعود كل صف الألف في الخلية؟ لقد قرأت هذا بلوق وظيفة مما يوحي باستخدام أساسي 5٪ = 0 حيث أساسي هو AUTO_INCREMENT ولكن هذا

وأ) لا تستخدم الفهارس ب) سيعود فقط القيم أساسي وهي القسمة على 5 و في حالة الحذف، قد لا يكون في الواقع كل صف 5TH

ويمكن أن يتم ذلك فقط من خلال الاستعلام SQL أم أنها تتطلب حلقات من صف من خلال مجموعة النتائج باستخدام المؤشرات؟

MySQLi في PHP للاتصال DB.

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

المحلول

وقائمة الطوابع الزمنية كل 5 دقائق:

SELECT
  MIN(logtimestamp) AS first_of_five_minutes
FROM tLog
GROUP BY
  DATE(logtimestamp),
  HOUR(logtimestamp),
  MINUTE(logtimestamp) - (MINUTE(logtimestamp) % 5)

والآن، يمكنك استخدام هذا فرعية مختارة للحصول على إدخالات سجل طلب الانضمام إلى logtimestamps first_of_five_minutes على. وبطبيعة الحال، إضافية لبنود WHERE لا بد من تكرارها في الداخل والخارج حتى تحصل على الطوابع الزمنية "الصحيحة".

لاحظ أيضا أن هذا يعود الطابع الزمني الأول في كل فترة لمدة خمس دقائق، فراس حلول مباشرة باستخدام minutes%5 = 0 فقط العودة logentries التي هي في الواقع على مضاعفات: 05، والتي قد تفشل إذا كان لديك التأخير في سجلات تسجيل أو ما شابه

نصائح أخرى

ولم تختبر تماما ولكن هذا يمكن أن تعمل

SELECT Row, col_a 
FROM (SELECT @row := @row + 1 AS Row, col1 AS col_a FROM table1) As derived1 
WHERE Row%5 = 0; 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top