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

SQLAlchemy、PostgreSQL、array_agg:array_aggからアイテムを選択する方法は?

    あなたはおそらくすべてを正しくやっていますが、最初に空の配列を取得しています。以前のクエリでは、Python内フィルタリングを使用しました(len(x[1]) > 1 )。 Queryを印刷できます 確認するために実行する前に式。

    おそらくhavingを追加する必要があります 基本クエリへの句:

    from sqlalchemy import Integer
    from sqlalchemy.dialects.postgresql import ARRAY
    
    cats_agg = func.array_agg(ProductCategory.id, type_=ARRAY(Integer)).label('cats')
    prods = (
        session.query(
            Product.id.label('id'),
            cats_agg,
        .outerjoin(
            ProductCategory,
            ProductCategory.product_id == Product.id)
        .group_by(Product.id)
        .having(func.array_length(cats_agg, 1) > 1)
        .subquery()
    )
    

    そうすれば、Pythonでのフィルタリングも必要なくなります。




    1. エラー1064(42000):SQL構文にエラーがあります。使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください

    2. C#SQL Serverからバイトを復号化するEncryptByPassPhrase?

    3. SQL クエリに 2 つの from 句を含めるにはどうすればよいですか?

    4. PostgreSQL 9.3:動的ピボットテーブル