問題タブ [distinct-on]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
7661 参照

sql - postgresのdistinct()関数(select修飾子ではない)

「distinct」という名前の関数を使用する、特に Postgres データベースに対する SQL クエリに出くわしました。すなわち:

これは、SELECT の通常の DISTINCT 修飾子ではないことに注意してください。少なくとも、DISTINCT 修飾子の通常の構文ではありません。括弧に注意してください。どうやら DISTINCT を関数として使用しているか、これは特別な構文である可能性があります。

これが何を意味するか分かりますか?

ちょっといじってみたけど書いてみたら

私は同じ結果を得る

それを同じ選択内の他のフィールドと組み合わせると、それが何をしているのか正確にはわかりません。

Postgres のドキュメントには何も見つかりません。

助けてくれてありがとう!

0 投票する
3 に答える
703 参照

sql - PLPGSQL 個別、順序付け、何も返さない

この plpgsql 関数を作成しましたが、何も返されません! 一方、クエリ部分を取り出して別のSQLウィンドウでこれを実行すると、正しい行が返されます。

また、クエリは実際には最適ではないと思うので、助けていただければ幸いです(plpgsqlにとって非常に新しい)

どうもありがとう!

0 投票する
1 に答える
1156 参照

sql - PostgreSQL を区別して、グループ化して、1 つにしていますか?

PostgreSQL クエリで問題が発生しています

私が欲しいのは、距離順に並べられた「キャンペーン」のリストで、場所からの最小距離 [in_lat、in_lng、in_radius] です。1 回は注文のため、もう 1 回はキャンペーンが希望の半径内にあるかどうかを確認するためです。

また、キャンペーンに複数の「Campaignreceiver」エントリ (receivetype [EMAIL、WEBSITE など]) がある可能性があります。

そして、キャンペーンを一度だけ取得したい。したがって、DISTINCT ON。

問題は、「WHERE distance < in_radius」のように機能させるにはどうすればよいかということです。私の推測では、GROUP BY と HAVING を追加していますが、いくつかのテストを行ったところ、うまくいきませんでした。

どんな助けでも大歓迎です!!!

0 投票する
7 に答える
256140 参照

sql - 異なるORDERBYのPostgreSQLDISTINCTON

このクエリを実行したい:

しかし、私はこのエラーを受け取ります:

PG ::エラー:エラー:SELECTDISTINCTON式は最初のORDERBY式と一致する必要があります

address_id最初の式として追加するとORDER BYエラーが発生しなくなりますが、並べ替えを追加したくありませんaddress_id。注文せずに行うことはできaddress_idますか?

0 投票する
3 に答える
15897 参照

postgresql - ある列で並べ替えられ、別の列では異なる行を選択する

関連 -異なる ORDER BY を使用した PostgreSQL DISTINCT ON

テーブル購入があります (product_id、 purchase_at、address_id)

サンプルデータ:

私が期待する結果は、各 address_id の最新の購入製品 (完全な行) であり、その結果は purchase_at フィールドによって子孫順に並べ替える必要があります。

クエリの使用:

私は得ています:

したがって、行は同じですが、順序が間違っています。それを修正する方法はありますか?

0 投票する
1 に答える
7238 参照

sql - PostgreSQLクエリで個別のタプルを並べ替える方法

個別のタプルのみを返すクエリをPostgresで送信しようとしています。私のサンプルクエリでは、cluster_id/feed_idの組み合わせに対してエントリが複数回存在する重複エントリは必要ありません。私が簡単に行う場合:

それだけですが、に従ってグループ化したいと思いnum_docsます。だから、私が次のことをするとき:

次のエラーが発生します。

エラーが発生する理由は理解できたと思いますが(グループを明示的に説明しない限り、タプルでグループ化できません)、どうすればよいですか?または、エラーの解釈が間違っている場合、最初の目標を達成する方法はありますか?

0 投票する
5 に答える
22625 参照

postgresql - PostgreSQL では、列を順序でグループ化することはできません

PostgreSQL では、すべてのユーザーを一度に取得し、日付順に並べ替えたいと考えています。

これは私のクエリです:

これはサンプルデータです:

今、私がやりたいことは、useridx と日付順でグループ化して、このテーブルを取得することです。

期待される結果:

実結果

グループデートもしたくない。useridx でグループ化し、日付 DESC で並べ替えたいだけです。

どんな助け/アイデアも大歓迎です!

注:Distinctも試しました。私のニーズに合わないか、間違っていました。

私は非常に混乱しており、メソッドとメソッドの間で立ち往生しています。DISTINCT ONrank()

結論:ここで同じ問題を抱えている人は、これを答えとして読むことができます. @kgrittn と @mu is too short の両方の答えは正しいです。私は自分のプロジェクトで回答とスキーマの両方を引き続き使用しますが、そのうちにどちらが最適かを理解できるようになります。したがって、それらのいずれかを選択して、作業を続けてください。あなたは大丈夫です。

Last Update : Distinct On が一部の ID を結果から除外することがあります。id列があり、同じ6行あるとしましょう。したがって、結果から除外すると区別されますが、rank() は単に結果になります。したがって、rank() を使用してください。

0 投票する
4 に答える
92 参照

sql - postgresqlのSQL結果から最大の結果を取得する方法

私はpostgresql8.3を使用しており、単純なsqlクエリがあります。

だから、私は次のような結果セットを取得しました:

ここで、instance_idで最大IDを取得したいのですが、結果は次のようになります。

どうすれば結果を得ることができますか?次のSQLを使用していますが、エラーが発生します。

エラー:リレーション「x」は存在しません

私を助けることができる人、どうもありがとう!

0 投票する
3 に答える
12315 参照

ruby-on-rails-3 - レールを使用してpostgres「DISTINCT ON」に別の順序を適用する

私はレールアプリを持っています:

user has_many :projects

user has_many :tasks, :through => :projects

project has_many :tasks

各タスクにはマイルストーンの日付があります。

私が使用している次のマイルストーン日付でプロジェクトの詳細の表を表示するには:

これはうまくいきます。

私は今、テーブルの列をソートできるようにしたいと考えています。

PostgresDISTINCT ONはソート可能ではないため、別の select ステートメントでラップする必要があります。つまり、SELECT * FROM (SELECT DISTINCT ON....) ORDER BY column_3

注文されている列は、必要に応じてSQLに組み込むことができると思いました。つまり、(プロジェクト名DESCで注文するため):

これは機能しますが、マイルストーンで注文できるようにしたいのですが、そのようには機能しません。

Railsクエリを変換して、任意の列で並べ替える方法を教えてもらえますか?

アップデート


私の質問は、activerecord クエリを周囲のSELECTandでラップするにはどうすればよいかということだと思いますORDER BY

私はそれを達成することができたと思います:

それが最善の方法ですか、それとも誰かがより良い方法を考えることができますか? - find/paginate_by_sql は回避策のようで、activerecord クエリの領域内にとどまることをお勧めします。

ありがとう

0 投票する
0 に答える
2142 参照

performance - Postgresql:SELECTDISTINCTONのより高速な代替手段

フィルタリングされたデータをあるテーブルから別のテーブルにコピーする際に問題が発生します(同様の構造)。基本的に、約110億行の大きなテーブルが1つあり、列の1つ(「フィンガープリント」と呼ばれる)に基づいて一意のレコードを別のテーブルにコピーしたいと思います。私はこのようなことを試みました:

通常は機能しますが、低速です。800 000行で構成される小さなテーブルでテストしたところ、1時間近くかかりました。INSERTをCOPY(バイナリオプション付き)ステートメントのペアに変更しようとしましたが、どういうわけかさらに悪化しました...

Linux LMDE、i5-2410m、6ギガのRAMでpsqlサーバーを実行しています。こんなに時間がかかるのか、それを改善する方法があるのか​​わからない。ヒントをいただければ幸いです。