sql >> Database teknologi >  >> RDS >> Oracle

Oracle SQL - max() med NULL-værdier

max(end_dt) keep (dense_rank first order by end_dt desc nulls first)

upd:

SQL Fiddle

Oracle 11g R2 Schema Setup :

CREATE TABLE t
    (val int, s date, e date)
;

INSERT ALL 
    INTO t (val, s, e)
         VALUES (1, sysdate-3, sysdate-2)
    INTO t (val, s, e)
         VALUES (1, sysdate-2, sysdate-1)
    INTO t (val, s, e)
         VALUES (1, sysdate-1, null)
    INTO t (val, s, e)
         VALUES (2, sysdate-1, sysdate-.5)
    INTO t (val, s, e)
         VALUES (2, sysdate-.5, sysdate-.25)
SELECT * FROM dual
;
 

Forespørgsel 1 :

select val, min(s), max(e) keep (dense_rank first order by e desc nulls first)
from t group by val
 

Resultater :

| VAL | MIN(S) | MAX(E)KEEP(DENSE_RANKFIRSTORDERBYEDESCNULLSFIRST) | --------------------------------------------------------------------------------------------- | 1 | November, 13 2012 14:15:46+0000 | (null) | | 2 | November, 15 2012 14:15:46+0000 | November, 16 2012 08:15:46+0000 |

  1. Find den hyppigste værdi i SQL-kolonnen

  2. Kopier en tabel fra en database til en anden i Postgres

  3. postgresql - antal (ingen null-værdier) af hver kolonne i en tabel

  4. Online migrering fra MySQL 5.6 Non-GTID til MySQL 5.7 med GTID