अगर आप the_date
चाहते हैं वास्तविक तिथि के रूप में फ़ील्ड:
select trunc(date '1970-01-01' + datetimeorigination / (24*60*60)) as the_date,
to_char(date '1970-01-01' + datetimeorigination / (24*60*60),
'HH24') as the_hour,
count(record_id)
from table_a
group by trunc(date '1970-01-01' + datetimeorigination / (24*60*60)),
to_char(date '1970-01-01' + datetimeorigination / (24*60*60), 'HH24');
THE_DATE THE_HOUR COUNT(RECORD_ID)
--------- -------- ----------------
24-SEP-13 14 1
20-SEP-13 18 1
यदि आप घंटे के मान को एक संख्या के रूप में चाहते हैं तो आप उस फ़ील्ड को to_number()
. में लपेट सकते हैं बुलाना। अगर यह प्रदर्शन के लिए है तो आपको तारीख को भी स्पष्ट रूप से प्रारूपित करना चाहिए:
select to_char(date '1970-01-01' + datetimeorigination / (24*60*60),
'YYYY-MM-DD') as the_date,
to_char(date '1970-01-01' + datetimeorigination / (24*60*60),
'HH24') as the_hour,
count(record_id)
from table_a
group by to_char(date '1970-01-01' + datetimeorigination / (24*60*60),
'YYYY-MM-DD'),
to_char(date '1970-01-01' + datetimeorigination / (24*60*60), 'HH24');
THE_DATE THE_HOUR COUNT(RECORD_ID)
---------- -------- ----------------
2013-09-24 14 1
2013-09-20 18 1
या दिनांक और समय के लिए एक साथ एक फ़ील्ड के साथ:
select to_char(date '1970-01-01' + datetimeorigination / (24*60*60),
'YYYY-MM-DD HH24') as the_hour,
count(record_id)
from table_a
group by to_char(date '1970-01-01' + datetimeorigination / (24*60*60),
'YYYY-MM-DD HH24');
THE_HOUR COUNT(RECORD_ID)
------------- ----------------
2013-09-24 14 1
2013-09-20 18 1
निर्भर करता है कि आप क्या देखना चाहते हैं और आप इसके साथ क्या करने जा रहे हैं।
आप एग्रीगेशन के लिए जो भी फ़ील्ड इस्तेमाल करते हैं, आपको उन्हें उसी तरह group by
में निर्दिष्ट करना होगा खंड - आप स्थितीय संकेतन का उपयोग नहीं कर सकते, उदा। group by 1, 2
. और आप पहले ही महसूस कर चुके हैं कि between
मानों को आरोही क्रम में होना चाहिए या इसे कुछ भी नहीं मिलेगा।