PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

PostgreSQL, tối thiểu, tối đa và số ngày trong phạm vi

Với bảng này (giống như bạn nên cung cấp):

CREATE TEMP TABLE tbl (
   id        int PRIMARY KEY
  ,mydatetxt text
 );

INSERT INTO tbl VALUES
  (1, '01.02.2011')
 ,(2, '05.01.2011')
 ,(3, '06.03.2012')
 ,(4, '07.08.2011')
 ,(5, '04.03.2013')
 ,(6, '06.08.2011')
 ,(7, '')             -- empty string
 ,(8, '02.02.2013')
 ,(9, '04.06.2010')
 ,(10, '10.10.2012')
 ,(11, '04.04.2012')
 ,(12, NULL)          -- NULL
 ,(13, '04.03.2013'); -- min date a 2nd time

Truy vấn phải tạo ra những gì bạn mô tả:

WITH base AS (
   SELECT to_date(mydatetxt, 'DD.MM.YYYY') AS the_date
   FROM   tbl
   WHERE  mydatetxt <> ''  -- excludes NULL and ''
   )
SELECT min(the_date) AS dmin
      ,max(the_date) AS dmax
      ,count(*) AS ct_incl
      ,(SELECT count(*)
        FROM   base b1
        WHERE  b1.the_date < max(b.the_date)
        AND    b1.the_date > min(b.the_date)
       ) AS ct_excl
FROM   base b

-> SQLfiddle demo

CTE yêu cầu Postgres 8.4 trở lên.
Cân nhắc để nâng cấp lên bản phát hành điểm mới nhất trên 9,1, hiện là 9,1,9 .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi postgres bytea khi liên kết null với các câu lệnh đã chuẩn bị

  2. Tổng quan về Lập trình phía máy chủ trong PostgreSQL

  3. Lấy lại mẫu trên dữ liệu chuỗi thời gian

  4. Giải thích về JSONB do PostgreSQL giới thiệu

  5. Thiết lập đa trung tâm dữ liệu với PostgreSQL