sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQL、最小、最大、および範囲内の日付の数

    この表を考えると(あなたが提供すべきだったように):

    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
    

    クエリはあなたが説明するものを生成するはずです:

    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デモ

    CTE Postgres8.4以降が必要です。
    最新のポイントリリースにアップグレードする ことを検討してください。 9.1の、現在 9.1.9




    1. SQLAlchemyを使用してWindows10のDockerでPostgresデータベースに接続するにはどうすればよいですか?

    2. CSVからMySQLにデータをインポートするにはどうすればよいですか?

    3. 単純なWebドキュメントシステム(または基本的なCMS)でRDBMSとフラットファイルを使用することの本当の利点はありますか?

    4. phpMyAdmin-接続できません-無効な設定-ルートパスワードを追加してから-ロックアウト