سؤال

ولدي جدول Oracle كبير العش تحتوي على الصفوف التي تمثل وحدات العمل، مع أعمدة لوقت البدء ووقت الانتهاء بالإضافة إلى البيانات الوصفية الأخرى.

وأنا بحاجة لتوليد الرسوم البيانية الاستخدام من هذه البيانات، نظرا لبعض معايير الترشيح التعسفية وفترة زمنية التقارير. على سبيل المثال، وتبين لي الرسم البياني لجميع الوظائف أليس لفترة 24 ساعة ابتداء من يوم الثلاثاء الماضي في الساعة 7:00 صباحا. وكل صف DB كومة عموديا في الرسم البياني.

ويمكن أن أفعل هذا في لغة عالية المستوى عن طريق الاستعلام عن كافة الصفوف ذات الصلة المحتملة، والوقت التقطيع دلاء كل واحد الى 1 دقيقة، والرسوم البيانية النتيجة. ولكن هناك وسيلة فعالة للقيام بذلك تقطيع الوقت في SQL؟ أم أن هناك تقنيات أوراكل الحالية أن يفعل هذا؟

وشكرا!

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

المحلول

في شروط الحصول على البيانات بها، يمكنك استخدام "مجموعة من" و " اقتطاع "لشريحة البيانات في فترات 1 دقيقة. على سبيل المثال:

SELECT user_name, truncate(event_time, 'YYYYMMDD HH24MI'), count(*)
FROM job_table
WHERE event_time > TO_DATE( some start date time)
AND user_name IN ( list of users to query )
GROUP BY user_name, truncate(event_time, 'YYYYMMDD HH24MI') 

وهذا سوف تعطيك نتائج مثل أدناه (على افتراض هناك 20 الصفوف أليس بين 8.00 و 8.01 و 40 الصفوف بين 8.01 و 8.02):

Alice  2008-12-16 08:00   20
Alice  2008-12-16 08:01   40

نصائح أخرى

وأفضل رهان هو أن يكون هناك جدول (أ مؤقتة ولدت على الطاير سيكون على ما يرام إذا كان الوقت شريحة هو دينامية) ومن ثم الانضمام ضد ذلك.

وهذا يجب أن تفعل ذلك بشكل جيد إلى حد ما. وسوف انهيار لحظة (1/1440 يوم واحد).

SELECT 
  to_char(Times.time,'hh24:mi'),
  count(*)   
FROM   
  (SELECT
     time
   FROM  
     dual
   WHERE 
     1=2 
   MODEL 
     dimension by ( 0 as key )
     measures     ( sysdate -1 as time )
     rules upsert ( time[ for key from 0 to 1 increment (1/1440) ] = sysdate-1 + cv(key)) ) Times,
  job_table
WHERE 
  begintime <= Times.time 
AND 
  endtime > Times.time 
AND
  user_name = 'Alice'
GROUP BY 
  Times.time 
ORDER BY
  Times.time

وأنا متأكد من أن هناك طريقة أسرع للقيام بذلك، ولكن هذا هو أفضل ما يمكن أن تصل. ويساعد هذا الأمل.

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