sql >> Database >  >> RDS >> Oracle

Sorteer op dag van de week van maandag tot zondag

Je krijgt het in de volgorde waarin je bent, omdat je per string bestelt (en dit zou niet werken omdat je nergens uit selecteert).

U kunt bestellen volgens het formaatmodel dat wordt gebruikt om de dag van de week in numerieke vorm te creëren, D , maar aangezien zondag hierin 1 is, raad ik aan om mod() . te gebruiken om dit te laten werken.

d.w.z. uitgaande van de tabel

create table a ( b date );

insert into a
 select sysdate - level
  from dual
connect by level <= 7;

Dit zou werken:

select mod(to_char(b, 'D') + 5, 7) as dd, to_char(b, 'DAY')
  from a
 order by mod(to_char(b, 'D') + 5, 7)

Hier is een SQL Fiddle om te demonstreren.

In uw geval zou uw vraag worden:

select ename, to_char(hiredate,'fmDay') as "Day" 
  from my_table
 order by mod(to_char(hiredate, 'D') + 5, 7)


  1. Leer hoe je formulieren in het geheugen kunt spawnen (ja, dat heb je goed gehoord)

  2. PostgreSQL:kenmerk verwijderen uit JSON-kolom

  3. Een Postgres DB op Heroku . vernietigen

  4. Waarom heeft de Oracle IN-clausule een limiet van 1000 alleen voor statische gegevens?