問題タブ [dense-rank]

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 投票する
1 に答える
128 参照

pandas - パンダの密なランク データフレームから特定の値を選択する

密なランク行列を持つ pandas データフレームがあり、2 を持つすべてのセルを選択したいと考えています。次に、以下のような結果データフレームに変換します。forループだけで各列と行をループしていますが、もっと良い方法はありますか?

dfは次のように見えます

results_df のようになる

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

oracle - OLE DB を使用して ORACLE に対する SSIS クエリで使用すると、DENSE_RANK がエラーを引き起こすのはなぜですか?

このクエリ:

このクエリは、ANUMID、PRODNUMID の各グループの行を DATE_ADDED で 1 から x までランク付けします。後続のクエリでは、DRANK=1 が追加された最新の行を取得します。

このクエリは、ORACLE SQL Developer、ローカル マシンの SSIS 環境、および TEST サーバーの SSIS OLE DB ソース プレビューで機能しますが、パッケージを実行すると機能しません。

エラー:

[OLE DB ソース 1 [677]] エラー: SSIS エラー コード DTS_E_OLEDBERROR。OLE DB エラーが発生しました。エラー コード: 0x80040E14。OLE DB レコードが利用可能です。ソース: "OraOLEDB" Hresult: 0x80040E14 説明: "ORA-00936: 式がありません"。

環境:

  • ローカル - Windows XP、SQL BIDS 2008

  • テスト - Windows7、SQL/BIDS 2008

それ以来、クエリを書き直して単純化し、データを一時テーブルに取得してから、SQL サーバーを使用してランク付けし、レコード数を削減しました。

そもそもSQLが機能しない根本原因を見つけるためのアイデアはありますか? また、プレビューは機能するのに、パッケージを実行すると機能しないのはなぜですか?

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

sql - Oracle SQL-DENSE_RANK

クライアント データ テーブルがあり、選択した列を以下に示します。

Client_ID と From_date でデータを昇順に並べた後、私の目的は、ステータスを前の行と比較するときに、そのクライアントのステータスが変化するたびに計算された Rank_ID を追加することです。Rank_ID に必要な値を以下に示します。

DENSE_RANK を分析関数として使用しようとしていますが、「正しくない」SQL コードは以下のとおりです。

ただし、私が遭遇している問題は、記述された SQL コードが与えられた場合、Rank_ID を次のように計算することです。

レコード 13 の場合、返される Rank_ID は 3 です (一方、5 が必要なのは、そのクライアントの前のレコードのステータスと比較した場合に、そのクライアントのステータスが変化するためです)。レコード 14 の場合、返される Rank_ID は 4 ですが、前の行と比較すると、そのクライアントのステータスが再び変化しているためです。

問題は、SQL がデータを Client_ID で並べ替え、次に Status_ID で並べ替えることにあると思います。問題は、DENSE_RANK 行にどのような変更を加えても、必要な答えが得られないことです。

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

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

sql-server - SQL 2008 DENSE_RANK - 機能しない

私はdense_rank関数を動作させようとしていますが、それは以下を返し続けます:

クエリは次のとおりです。

明らかな何かが欠けているのは明らかですが、見てもわかりませんか?

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

sql - 条件が満たされたときに Row_Number シーケンスを再開する

簡単な修正のように見える障害に遭遇していますが、解決策がわかりません。ここにいる何人かの人々が、Oracle SQL についてもう少し知識があれば助けてくれることを願っています。

基本的に、完了日でランク付けされたジョブのリストを作成していますが、これは非常に単純です。それらの間の共通のリンクは、それらがすべて同じ顧客 (個別の番号) であり、同じ場所 (個別の番号) にあるということです。私の問題は、2 つのジョブ間の期間が 30 日を超えるたびに、そのランク/カウントを 1 から中断して再開する方法を見つける必要があることです。ここに私が見ているものの簡略化されたバージョンがあります:

2行目の期間が30を超えているため、どのように表示したいかは次のとおりです。

2 番目のジョブは 30 日のウィンドウの外にあるため、チェーンは次のジョブで最初からやり直す必要があります。私の問題は、この基準が認識され、最初からやり直すようにデータを分割する方法が見つからないことです。このような方法で row_number または dense_rank を分割できる別の列はありません (たとえば、30 日間のチェーンごとに共通の順序キーまたは体系的なジョブ シーケンス)。

ここで読んだスレッドからこのデータを解析するために約 20 の異なる方法を試しましたが、役に立ちませんでした。この順序付けを適用する必要がある約 50,000 行のデータがあります。私は約 1 年間、その場で仕事をしながら SQL を独学しています。私はこれで私の知識の限界に達しました。