Zählen die Anzahl der Datensätze, die von Stunde zu Stunde zwischen zwei Datumsangaben in oracle
Brauche ich eine EINZELNE Abfrage, hat diese Sequenz in oracle.
select count(*) from table1
where request_time < timestamp'2012-05-19 12:00:00' and (end_time > timestamp'2012-05-19 12:00:00' or end_time=null);
select count(*) from table1
where request_time < timestamp'2012-05-19 13:00:00' and (end_time > timestamp'2012-05-19 13:00:00' or end_time=null);
select count(*) from table1
where request_time < timestamp'2012-05-19 14:00:00' and (end_time > timestamp'2012-05-19 14:00:00' or end_time=null);
select count(*) table1
where request_time < timestamp'2012-05-19 15:00:00' and (end_time > timestamp'2012-05-19 15:00:00' or end_time=null);
select count(*) from table1
where request_time < timestamp'2012-05-19 16:00:00' and (end_time > timestamp'2012-05-19 16:00:00' or end_time=null);
Wie sehen Sie die Stunde nimmt.
hier ist die Ausgabe
COUNT(*)
1085
COUNT(*)
1233
COUNT(*)
1407
COUNT(*)
1322
COUNT(*)
1237
Ich geschrieben habe eine Abfrage, aber es gibt mir nicht die richtige Antwort!
select col1, count(*) from
(select TO_CHAR(request_time, 'YYYY-MM-DD HH24') as col1 from table1
where request_time <= timestamp'2012-05-19 12:00:00' and (end_time >= timestamp'2012-05-19 12:00:00' or end_time=null))
group by col1 order by col1;
diese Abfrage liefert mir ein Ergebnis festgelegt, dass die Summe der count(*) ist gleich der ersten Abfrage oben geschrieben!
hier ist das Ergebnis:
COL1 COUNT(*)
------------- ----------------------
2012-05-19 07 22
2012-05-19 08 141
2012-05-19 09 322
2012-05-19 10 318
2012-05-19 11 282
InformationsquelleAutor Heidarzadeh | 2012-05-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinweis: die Verwendung von
trunc
- Ausdruck mit Datum-Werten verwendet. Können Sie weglassen deralter session
wenn Sie nicht ausführen der Abfrage in sql*plus.Ich glaube, ich verstehe dich nicht.
Wenn Sie sprechen über die laufende Summe
COUNT(*)
versuchen ipip-Lösung mitcount(*)
ersetzt mitsum(count(*)) over (order by trunc(created,'HH'))
.M ich habe versucht, Sie Lösung, aber habe diesen Fehler "not a single-group group function"
Sind Sie sicher, dass
trunc(created,'HH')
noch enthalten war, ingroup by
?InformationsquelleAutor Iľja
Ihre individuellen Anfragen zu sein scheinen, matching überlappender Datensätze. Würde es helfen, wenn Sie einige Beispiel-Daten, die in Ihrer Frage, aber ich vermute es mal...
Beispielsweise alle Datensätze, die ein end_time=null und ein request_time=2012-05-19 13:30:00 werden gezählt von der ersten und zweiten Abfragen; aber Sie werden nur einmal gezählt in Ihren "Allgemeine" Abfrage.
Vielleicht haben Sie gedacht, um die Abfrage auf einen Datumsbereich request_time, anstatt einen open-ended-Prädikat wie
request_time < timestamp'2012-05-19 12:00:00'
?Ich habe zwei Termine und ich möchten, berechnen Sie diese Abfrage zwischen zwei Datumsangaben. dann möchte ich erweitern Sie diese Abfrage um das Ergebnis von Tag, Monat und sogar Jahr!
InformationsquelleAutor Jeffrey Kemp
Für Oracle-Datenbank seine Arbeit als erwartet.
WÄHLEN
to_char(aktualisiert,'DD-MM-YYYY HH'),
count(*)
AUS
Kunden
WO
trunc(aktualisiert) >= to_Char('02-JUL-2017')
Und trunc(aktualisiert) <= to_Char('02-JUL-2017')
group by to_char(aktualisiert,'DD-MM-YYYY HH')
InformationsquelleAutor Appesh
Versuchen, diese
InformationsquelleAutor