問題タブ [analytic-functions]
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.
sql - Oracle-max()を使用してサブクエリをリファクタリングします
以下のクエリがあります。SOFTWARE_DEVELOPMENT_CYCLEには複数の行がありますが、最新のものに興味があります。
サブクエリを使用しないようにクエリを書き直したいと思います。DENSE_RANK LAST ORDERY BYで試しましたが、役に立ちませんでした。
誰かアドバイスしてもらえますか?ありがとうございました。
sql - パーティションを持つテーブルに書き込まれた Oracle クエリの最適化
Oracle には、日付列のパーティションを持つ約 5,500 万のレコードで構成される 1 つのテーブルがあります。
このテーブルには、ある位置に基づいて、毎日約 600,000 レコードが格納されます。
現在、いくつかの分析関数がプロシージャ内の 1 つの選択クエリで使用されています。たとえば、lead、lag、row_number() over(partition by col1、date order by col1、date ) は、'partition by' と 'order by' のために時間がかかりすぎています。 ' 日付列の句。
クエリを最適化する他の方法はありますか?
sql - SQL-ROW_NUMBER()OVER(ORDER BY)が機能しない
句に何を入れてもORDER BY
、結果セットの順序は変わりません。
sql - Oracle Analytics ウィンドウ
次の表を考えると
および次のクエリ:
次の結果が得られます。
期待される:
RUNNING_BALANCE が負の数として返されるのはなぜですか? 明らかな abs() 以外に、どうすればそうしないことができますか?
database - order by句がない場合、OracleのFIRST_VALUE()関数はどのように行を処理しますか?
First_value() の定義は、順序付けられたデータ セットの最初の値を返すことを示しています。その構文は
First_Value(ColumnName) over ( [Partition By Column] [Order by Column] )
Partition By と Order By はオプションです。partition by を削除すると、セット全体の最初の値が取得されます。
私の質問は、Order By を削除するとどうなるか?? オラクルは暗黙的にセットを注文しますか、それともランダムな最初の値を与えるだけですか、それともデータが挿入される順序で最初の値を与えるのですか?
sql - Oracle の「Partition By」および「Row_Number」キーワード
他の人が作成した SQL クエリがあり、その機能を理解しようとしています。誰かがここでPartition By
andRow_Number
キーワードが何をするのかを説明し、それを実際に使用する簡単な例と、それを使用したい理由を教えてください。
パーティションの例:
オンラインでいくつかの例を見てきましたが、それらは少し深すぎます。
前もって感謝します!
sql - 分析関数を使用して 2 つの日付列を持つレコードを選択するパフォーマンスの高いクエリ
SQL クエリを作成する効率的な方法を探しています。
列 ( id
、fname
、lname
、accountid
、creation_date
)を持つテーブルがあり、そのテーブル内で同じ、、およびに基づく最新の日付をupdate_date
持つレコードを探す必要があります ( null の可能性があることに注意してください)。fname
lname
accountid
greatest(max(creation_date),max(update_date))
update_date
分析関数を使用する必要があると思います
私はこれらのケースを持っています:
最後に挿入されたレコードを選択したい: このレコード (3,'a','a','2','07/01/2010 10:59:43','07/01/2010 10:59:43' )
両方の列 (creation_date,update_date) で最新のもの (4,'b','a','2','07/01/201110:59:43',null) を選択したい
両方の列 (creation_date,update_date) で最新のもの (7,'c','g','4','07/01/2011 10:59:43',null) を選択したい
両方の列 (creation_date,update_date) で最新のもの (9,'k','t','2','07/01/2009 10:59:43','07/01) を選択したい/2012 10:59:43')
sql - 列の値に基づいた行のランク付け/カウント
このsqlfilddleで説明されている形式のデータがあります:http ://sqlfiddle.com/#!4 / b9cdf / 2
基本的に、ユーザーIDとイベントが発生した時刻を含むテーブル。私がやりたいのは、ユーザーが発生した時間に基づいてイベントをカウントすることです。したがって、次のようなテーブルは次のようになります。
イベントが発生した順序に基づいて、イベントに数値ランクを割り当てたいと思います。したがって、これは上記の表が次のようになることを意味します。
Oracle SQLでこれを行う方法はありますか?それとも、スクリプト言語に吐き出してそこから取り出す必要がありますか?
ありがとう!
oracle - 分析関数を使用してクエリを削除する
最小限のレコードを持つレコードを削除します。2 つのテーブル person (id, otherID) があります。otherID は他の person.id と film (id, country, personID) の参照です。ここで、personID は person.id の外部キーです。
personID と country に関連するレコードが最小限である映画テーブルのすべてのレコードを削除したいと考えています。例えば:
Film(3, fr, 2) Person(1, 2 ) を削除する必要があります->国 fr, 2 の人物 1 の数が、同じ国の他の人物 2 (otherID 列) の数より多いためです。 fr',1.
Person(2, 2) 削除するものはありません
Person(3, 2) は、レコード Film(3, fr, 2) または Film(4, fr, 3) のいずれかを削除します。これは、どちらも国として fr を持ち、カウント = 1 であるが、レコードが Film(3, fr, 2) であるためです。前に削除されたので、Film(4, fr, 3) を保持する必要があります。
ここで、count = フィルムから count(*) を選択 (film.personID、film.country によるパーティション)
そしてキープ
実際には person テーブルの各レコードについて、以下を探します。
a = select count(*) over (partition person.id,film.country)
b = select count(*) over (partition person.otherID,film.country)
a と b の両方に同じ film.country を指定し、min(a,b) を持つレコードを削除します。