Nếu bạn muốn the_date
trường như một ngày thực tế:
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
Nếu bạn muốn giá trị giờ là một số, bạn có thể bọc trường đó trong to_number()
cuộc gọi. Nếu đây là để hiển thị thì bạn cũng nên định dạng ngày rõ ràng:
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
Hoặc với một trường cho ngày và giờ cùng nhau:
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
Tùy thuộc vào những gì bạn muốn xem và những gì bạn sẽ làm với nó.
Cho dù bạn sử dụng trường nào để tổng hợp, bạn cần chỉ định chúng theo cùng một cách trong nhóm group by
mệnh đề - bạn không thể sử dụng ký hiệu vị trí, ví dụ:group by 1, 2
. Có bạn đã nhận ra rằng between
các giá trị phải theo thứ tự tăng dần nếu không sẽ không tìm thấy gì cả.