問題タブ [top-n]
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.
mysql - MySQLは合計20行をフェッチしますが、一意のIDごとに10行しか取得しません
ここで少し問題があるので、説明します。テーブル内の一意の ID ごとに、最新 (最高 ID) の最大 10 行 (10 より多い/少ない) を取得したいと考えています。
したがって、ID「1」と「2」から最新の 10 行を知りたい場合はLIMIT、20 (2 * 10) に設定します。
これが現在のクエリの外観です (最初の ID には 10 行以上存在するため、最初の ID の最新の 20 行が誤ってフェッチされます)。
php - MySQL を使用して、ページネーションを使用してグループごとに上位 N をクエリします
私はSOでいくつかの答えを探しましたが、私が達成したいことを思い付くものは何もないので、グループごとの上位Nについて別の質問があります.
DB構造
現在、次のように Post テーブルがあります。
および次のようなコメント テーブル:
ゴール
comment_dateページネーションをサポートして、投稿ごとに上位 n コメントを取得したいと考えています。可能であれば、投稿ごとに正確に n 個のコメントを返す必要があります。たとえば、投稿に 10 個のコメントがある場合は 3 個が返され、投稿に 2 個のコメントがある場合は 2 個しか返されません。- すべてのコメント フィールドを返す必要があります。
- 、、のみ
post_idを返す必要がありますが、すべてのフィールドを返すことができれば素晴らしいでしょう。post_titlepost_text - 可能であれば、投稿は 1 回だけ表示する必要があります。つまり、1 ページ目にあった場合、2 ページ目では考慮されません (以下の例を参照してください)。これは、投稿を複数回表示させるよりも簡単に実現できると思います。
例
次の投稿があります。
および次のコメント ( comment_datedess 順、date 12より新しいdate 11):
1 ページあたりのコメント数が 6 に制限されているとします。これnは 3 です。期待される結果は次のとおりです。
私はこれと同様のことを試しました:複数のテーブル結合を持つグループごとの上位 Nですが、comment_date降順で並べ替えると、正確に n 個の結果が返されるという保証はありません。
どんな助けでも大歓迎です。
sql - postgres 検索クエリの最適化に関する問題
次の PostgreSQL クエリで問題が発生しています。実行に 10 秒以上かかります。このクエリを合理的な速度まで高速化する方法はありますか。非常に大きなデータベースでビデオに関連する最も関連性の高い検索用語を探しているだけです。 .
analyze を使用してクエリを実行すると、結果のクエリ プランは次のようになります ( http://explain.depesz.com/s/yDJ )。
テーブルのスキーマは次のとおりです。
インデックスのみのスキャンで 7 秒まで短縮できましたが、それでも十分に低くはありませんでした。aws r3.xlarge インスタンスの Ubuntu 14.04 で PostgreSQL 9.3 を実行しています。テーブルには約 5,000 万行あります。どんなアドバイスでも大歓迎です!
編集:
SELECT schemaname,tablename,attname,null_frac,avg_width,n_distinct FROM pg_stats WHERE schemaname='public' and tablename='term_search'; の結果が添付されています。
sql - MSSQL ID で複数の列から最大値を取得する
これについて多くの同様の投稿に出くわしましたが、これに固有のものは見つかりませんでした。
ここに私のサンプルデータがあります:
最初に、各 CID と NARID の最大 NADate を取得しようとしています。
次に、これらの結果から、最大 AEDate を持つレコードを取得します (他のすべての対応するフィールドと共に)。
データベースの種類は MSSQL 2005 です。
sql-server - SQL Server のトップ 1 に対するカウント(*)
多くのレコードを持つテーブルを操作します。特定のレコードが存在するか、レコードのグループがいくつかの条件に一致するかを知るには、Count(*) を作成するか Top 1 を作成する方が良いかは誰でも知っています。また、このタイプの文はテーブルをロックするか、テーブルをロックしないように指定する必要があります。
oracle - 各ジョブの最初のオカレンスのみを取得できません
リポジトリからいくつかのジョブをクエリしようとしていますが、開始時間が最新のジョブのみが必要です。これに ROW_NUMBER を使用してみましたが、ジョブごとに行番号 1 のみを選択しましたが、うまくいかないようです:
お手伝いをお願いできますか?
oracle - 米国の 50 州の上位 5 つの土地面積を把握しようとしています
テーブルを作成しました。州という名前の列と、土地面積という名前の別の列があります。私はオラクル11gを使用しています。ここでさまざまな質問を見てきましたが、解決策が見つかりません。これが私がこれまでに試したことです:
これは、数値的には上位 5 つの土地面積を提供するものではありません。
私もこれを試しましたが、どちらもうまくいきません:
私を正しい軌道に乗せるための提案はありますか??
ここにテーブルのサンプルがあります
クエリからの望ましい出力:
sql - これらのクエリを結合する方法を理解しようとしています
私は成績という名前のテーブルを持っています。Students、Practical、Written という名前の列。テストの合計点で上位 5 人の生徒を見つけようとしています。正しく結合する方法がわからないクエリを次に示します。私はオラクル11gを使用しています。これにより、各学生の合計額が得られます。
これにより、上位 5 人の学生が取得されます。
sql - Oracle リンク サーバーの上位 N 構文
Microsoft SQL Server 2012 にリンクされた Oracle 11g サーバーがあります。
大規模なリンクされたデータセットを Oracle から取得しようとしているため、制限するために最初の 100 レコードだけを取得したいと考えています。
SQL Server では単純に
Oracle では、構文は次のとおりです。
SQL Server 2012 クエリに 3 つ以上の結合があるとすぐに、
次のエラーが発生します
リンク サーバー "BIS" の OLE DB プロバイダー "OraOLEDB.Oracle" がメッセージ "ORA-01403: データが見つかりません。
メッセージ 7346、レベル 16、状態 2、行 1
OLE DB プロバイダーから行のデータを取得できません"OraOLEDB.リンクサーバー「BIS」の場合は「Oracle」。
取り出すtop 100と機能しますが、ネットワーク上であまりにも多くのデータをドラッグします。さらに、終了する前に、select ステートメントにかなりの数の結合を既に持っている 3 つに追加する必要もあります。
select ステートメントで多数のテーブルを結合し、SQL Server 2012 で T-SQL 構文を使用して最初の 100 レコードのみを返し、これらのレコードを Oracle から取得するにはどうすればよいですか?