私は、共通IDでグループ化された複数のレコードに対して集計関数を実行しています。問題は、グループ化されたレコード内で異なるかもしれないいくつかの他のフィールドをエクスポートすることですが、レコードの1つ(特定のフィールドをクエリのORDER BYに従って最初のフィールドから取得したい)です。関連するレコードをグループ化しますが、最初のレコードのみから特定のフィールドを選択します
ポイントの例の開始:
SELECT
customer_id,
sum(order_total),
referral_code
FROM order
GROUP BY customer_id
ORDER BY date_created
を私は紹介コードを照会する必要がありますが、集約関数の外でそれをやって、私は同様にその場でグループに持っていることを意味し、それは私が欲しいものではありません - Iこの例では顧客あたり1行しか必要ありません。私は本当に最初の注文から紹介コードを気にしています。後で紹介コードを捨てても大丈夫です。
これはPostgreSQLで書かれていますが、他のDBの構文も同様に動作する可能性があります。
拒否されたソリューション:順序が重要であるため、
- MAX()または分()を使用することはできません。
- サブクエリは最初は機能しますが、縮尺は変更されません。これは非常に少ない例です。私の実際のクエリには、referral_codeのような数多くのフィールドがあり、最初のインスタンスだけが必要です。サブクエリに複写された場合、メンテナンスの悪夢になるWHERE句が数十件あります。
... 8.4の新機能のようになります。また、これはトリックを行う可能性があります
?残念ながら、リリースされたばかりの新しいバージョンに移行するにはしばらく時間がかかりますが、今はまだ8.2に固執しています(うまくいきません...):\ – David