1. Poniższe zapytanie liczy sume wystąpień danego zdarzenia dla każdej godziny
  2. z ostatnich trzech dni - zapytanie korzysta z dwóch tabel ( req_log, res_log ).
  3. Pierwsza tabela zawiera Requesty, druga responsy.
  4.  
  5. SELECT to_char(trunc(DATE_TIME,'HH24'),'DD.MM HH24'), nvl(sum(AMOUNT),0) FROM(
  6. SELECT res_log.local_time DATE_TIME, 1 AMOUNT FROM req_log, res_log
  7. WHERE req_log.local_time BETWEEN sysdate-3 AND sysdate AND req_log.REQ_ID=res_log.RESP_ID AND (res_log.time_res - req_log.event_time)/1000<10000 AND res_log.RESULT_ID=1
  8. UNION ALL
  9. SELECT time_domain,0 FROM t_domain WHERE time_domain BETWEEN sysdate-3 AND sysdate
  10. )
  11. GROUP BY trunc(DATE_TIME,'HH24')
  12.  
  13. zwraca mi (dzien, miesiac, godzina wynik):
  14.  
  15. 31.03 09 1
  16. 01.04 01 8
  17. 01.04 02 3
  18. 01.04 09 1
  19.  
  20. Jak widać są przeskoki. Jak zrobić żeby ich nie BYło a na miejsce gdzie nic nie ma zapytanie zwracało wartość 0. Jak widać powyżej funkcja nvl nie działa w tym przypadku
  21. ponieważ zapytanie nie zwraca wartości NULL. Proszę o pomoc.