web-dev-qa-db-ja.com

代数関係SQL GROUP BY SORT BY ORDER BY

代数関係のGROUP BY、SORT BY、ORDER BYに相当するものは何ですか?

8
Cyberflow

リレーショナル代数ではどちらも不可能ですが、人々はこれらの操作のためにいくつかの「拡張」を作成しています(注:元のテキストでは、テキストの一部が下付き文字として書かれています)。

GROUP BY、 『Fundamentals of Database Systems(Elmasri、Navathe 2011 6th ed)』によると:

基本的なリレーショナル代数では表現できないもう1つのタイプの要求は、データベースからの値のコレクションに数学的な集約関数を指定することです。
...
記号ℑ(発音スクリプトF)7を使用してAGGREGATE FUNCTION操作を定義し、これらのタイプの要求を次のように指定できます。

<グループ化属性>ℑ<関数リスト>(R)

ここで、<grouping attributes>はRで指定されたリレーションの属性のリストであり、<function list>は(<function> <attribute>)ペアのリストです。このような各ペアで、<function>はSUM、AVERAGE、MAXIMUM、MINIMUM、COUNTなどの許可された関数の1つであり、<attribute>はRによって指定されたリレーションの属性です。結果のリレーションにはグループ化属性と1関数リストの各要素の属性。

ORDER BY(SORT BY)、 別のソース:

リレーションはセット(またはバッグ)であるため、リレーションに定義された順序はありません。つまり、順序に関係なく、同じタプルが含まれていれば、2つの関係は同じです。ただし、ユーザーはクエリの出力を特定の順序で一覧表示したい場合があります。出力が関係ではなく、順序付けられたタプルのリストである演算子を許可する場合は、関係をソートする追加の演算子τを定義できます。

たとえば、式

τLastName、FirstName(学生)

すべてのStudentタプルのリストを生成し、LastName(1次ソートキー)、次にFirstName(2次ソートキー)の順に並べます。 (2次ソート・キーは、2つのタプルが1次ソート・キーに同意する場合にのみ使用されます。ソート操作は、最上位から最下位まで、任意の数のソート・キーをリストできます。)

15
Simo Kivistö

次のように、集計を行わずにテーブルをグループ化する列に射影πを使用できます(PROJECT操作は重複するタプルを削除します)。

πc1、c2、c3(R)

ここで、c1、c2、c3は列(属性)で、Rはテーブル(関係)です。

3
BJ Davey