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

他のRDBMSのPostgresqlEVERY集計関数に相当するものはありますか?

    EVERY()のエミュレート CASEを使用 およびSUM()

    実際、この記事では、EVERY()の方法について説明します。 CASEを介してエミュレートできます およびSUM() 。次の2つのステートメントは同等です。

    SELECT EVERY(id < 10)
    FROM book
    
    SELECT CASE SUM(CASE WHEN id < 10 THEN 0 ELSE 1 END) 
             WHEN 0 THEN 1 
             ELSE 0 
           END
    FROM book;
    

    EVERY()についても同じことが言えます。 ウィンドウ関数:

    SELECT 
      book.*, 
      EVERY(title LIKE '%a') OVER (PARTITION BY author_id)
    FROM book
    
    SELECT
      book.*,
      CASE SUM(CASE WHEN title LIKE '%a' THEN 0 ELSE 1 END)
           OVER(PARTITION BY author_id)
        WHEN 0 THEN 1 
        ELSE 0
      END
    FROM book;
    

    SQL標準

    SQL:2008 標準では、EVERYについて言及しています 集計関数:

    10.9 <aggregate function>
    
    [...]
    
    <aggregate function> ::=
      COUNT <left paren> <asterisk> <right paren> [ <filter clause> ]
      | <general set function> [ <filter clause> ]
      | <binary set function> [ <filter clause> ]
      | <ordered set function> [ <filter clause> ]
    
    <general set function> ::=
      <set function type> <left paren> [ <set quantifier> ]
      <value expression> <right paren>
    
    <set function type> ::=
      <computational operation>
    
    <computational operation> ::=
      AVG
      | MAX
      | MIN
      | SUM
      | EVERY
      | [...]
    

    ただし、「高度な」SQL標準機能は、データベースによって実装されないことがよくあります。 Oracle 11g たとえば、それをサポートしていません。また、 SQL Server2012> 。

    HSQLDB を使用 しかし、あなたはもっと幸運かもしれません。 HSQLDB 2.xは非常に標準に準拠しており、MySQLはBIT_AND()を認識しています EVERY()の非標準エイリアスである集計関数 、Postgresでもサポートされています。

    一部のデータベースではユーザー定義の集計関数を記述できるため、EVERY()を実装することもできます。 自分で。




    1. JaccardIndexを使用したDjangoMovieRecommendationアプリの作成

    2. MySQLのspoolコマンドに相当するものは何ですか?

    3. 複数の外部キーは意味がありますか?

    4. Oracleを使用して切断された接続をクリーンアップするにはどうすればよいですか?