1. ホーム
  2. sql

[解決済み] 代数関係SQL GROUP BY SORT BY ORDER BY

2022-03-09 01:54:54

質問

私は、代数的関係におけるGROUP BY、SORT BY、ORDER BYに相当するものを知りたいと思いました。

どのように解決するのですか?

関係代数ではどちらも不可能ですが、これらの操作を行うための"extensions"がいくつか作成されています(注:原文では一部を下付き文字で表記しています)。

GROUP BY、書籍「データベースシステムの基礎」(Elmasri, Navathe 2011 6th ed)による。

<ブロッククオート

基本的な関係代数では表現できないもう一つの要求として、以下のものがある。 データベースからの値の集合に対して、数学的な集約関数を指定する。

...

AGGREGATE FUNCTIONオペレーションは、記号ȑ(発音は「...」)を使って定義できる。 script F)7 を用いて、以下のようにこれらの要求を指定する。

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

<ブロッククオート

ここで、<grouping attributes> はRで指定された関係の属性のリスト、 <function list> は (<function> <attribute>) の対のリストである。そのような各ペアにおいて <function> は、SUM、AVERAGE、MAXIMUM.などの許可された関数の1つである。 結果として得られる関係は、グループ化属性と、関数リストの各要素に対す る1つの属性を持つ。

による注文(ソート)。 ジョン・L・ドナルドソン氏の講義ノート * (現在は入手不可)。

関係は集合(または袋)であるため、関係には順序が定義されていない。 つまり、2つの関係は、同じタプルを含むなら、順序に関係なく同じものである。 しかし、ユーザーはクエリの出力をある特定の順序でリストアップすることを頻繁に 望む。 もし、出力が関係ではなく、タプルの順序付きリストである演算子 を許容するならば、関係をソートする追加演算子τを定義することができる。

<ブロッククオート

例えば、次のような式があります。

τLastName,FirstName(Student)(生徒)

<ブロッククオート

は、すべての Student タプルのリストを LastName (主ソートキー) の次に FirstName (副ソートキー) で並べたものを生成します。 (2つのタプルが主ソートキーで一致した場合のみ、副ソートキーが使用されます。 ソート操作は、最も重要なものから最も重要でないものまで、任意の数のソートキーをリストアップすることができます)。

* <サブ ジョン・L・ドナルドソン の講義ノート(名誉教授)。 CSCI 311 データベースシステム にて。 桜美林大学コンピューターサイエンス . 参考文献 2015.2022年確認、もう利用できない。