問題タブ [sql-standards]

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 に答える
219 参照

sql - ジョイン標準SQL準拠のアップデートです

次の標準 SQL は準拠していますか? そうでない場合、なぜですか?

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

sql - Oracle 11 でデータを照会する方法

例としてデータのクエリに苦労しています

私の願いの結果

結果のルール

  • Customer Register_status を使用して、最新のステータスを表示する必要があります
  • 日付は、最終ステータスが変更された最初の日付でなければなりません
  • Customer_Register_Status が決してない場合、表示はトランザクションの最初の日付を表示する必要があります。

結果を取得するためのクエリの作成方法を教えてください

0 投票する
2 に答える
100 参照

mysql - 2 つの値の間の SQL 標準

「その間」を使用する場合、SQL標準またはMySQLに違いはありますか。より正確に言うと、SQL Standard では、次のようにします。

に等しいか:

結果はMySQLでも同じですか。

0 投票する
2 に答える
586 参照

sql - SQL Server - 相関関係のある条件付き集計

バックグラウンド:

元のケースは非常にシンプルでした。収益の高いものから低いものまで、ユーザーごとの現在の合計を計算します。

クエリ:

LiveDemo

出力:

特定のウィンドウ関数を使用すると、別の方法で計算できます。


SUMここで、windowedを使用して書き直すことができないと仮定しましょう。

LiveDemo

列リストCROSS APPLYの相関サブクエリが好きではなく、2 回使用されるため、使用しました。 SELECTc3

すべてが正常に機能します。しかし、よく見るc2c3とても似ています。それでは、それらを組み合わせて単純な条件付き集計を使用してみませんか。

残念ながら、それは不可能です。

外部参照を含む集計式に複数の列が指定されています。集計される式に外部参照が含まれる場合、その外部参照は、式で参照される唯一の列である必要があります。

もちろん、別のサブクエリでラップすることを回避できますが、少し「醜い」ものになります。

LiveDemo


Postgresqlバージョン。唯一の違いはLATERAL、代わりにCROSS APPLY.

SqlFiddleDemo

それは非常にうまく機能します。


SQLite/MySQLバージョン (それが私が好む理由ですLATERAL/CROSS APPLY):

SQLFiddleDemo-SQLite SQLFiddleDemo-MySQL


Aggregates with an Outer Referenceを読みました:

制限のソースはSQL-92標準にあり、コードベースSQL Serverから継承されています。Sybase問題は、SQL Server が集計を計算するクエリを特定する必要があることです。

それを回避する方法だけを示す答えは探しません。

質問は次のとおりです。

  1. 標準のどの部分がそれを禁止または妨害しますか?
  2. 他の RDBMS では、この種の外部依存関係に問題がないのはなぜですか?
  3. それらは本来あるべきように拡張SQL StandardしてSQL Server動作しますか、SQL Serverそれとも完全に (正しく) 実装していませんか?

以下を参考にしていただければ幸いです。

編集:

SQL-92の概念がないことはわかっていLATERALます。ただし、( のような) サブクエリを使用するバージョンSQLite/MySQLも機能しません。

LiveDemo

編集2:

少し単純化するために、相関サブクエリのみをチェックしてみましょう。

上記のバージョンは で正常に動作しMySQL/SQLite/Postgresqlます。

SQL Serverエラーが発生します。サブクエリでラップして1つのレベルに「フラット化」すると、次のように機能します。

この質問のポイントは、それをどのようにSQL standard規制するかです。

LiveDemo

0 投票する
2 に答える
5229 参照

google-bigquery - 標準 SQL を使用した BigQuery テーブル デコレータ

標準 SQL を使用したテーブル デコレータの使用に問題があります。ただし、レガシー SQL 構文と同じ概念が機能します。これはバグですか?ここに例があります。

(A) 次のクエリは問題なく動作します

SELECT COUNT(*) FROM [some-project-name:some_dataset.some_table_name@<time1>-<time2>]

(B) 次のクエリは、エラー メッセージを返します。 Error: Table "some-project-name.some_dataset.some_table_name@<time1>-<time2>" cannot include decorator

SELECT COUNT(*) FROM `some-project-name.some_dataset.some_table_name@<time1>-<time2>`

ノート:

  • クエリ (A) では、[レガシー SQL を使用] ボックスがオンになっています。
  • クエリ (B) では、[レガシー SQL を使用] ボックスがオフになっています。
  • <time1>絶対であり、Unix エポックからのミリ秒単位のテーブルの作成時間です。
  • <time2>ミリ秒単位の現在のタイムスタンプです

アップデート:

Mikhail が指摘したように、この機能は標準 SQL では利用できません。こちらから依頼されました。

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

string - Google Big Query の末尾から 3 番目の部分文字列

私は標準の sql を使用しており、最後から 3 番目の部分文字列を抽出したいと考えています。

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

sql - SQL標準にGROUP BYが本当に必要ですか

数年間 SQL を書いた後、関心のある列を配置してからSELECTGROUP BY. なぜそんなことをしなければならないのか、考えずにはいられません。

ユーザーがグループ化する列を特定する必要がある理由は何ですか? に集計関数がありSELECT、残りの非集計列でグループ化されている場合、SQL エンジンに仮定させることはできませんか?

CASE WHENこれは、 inが大きい場合に特に役立ち、より簡潔になりますSELECT