2 つの列の最大差を取得することは可能ですか (たとえば、開始重量と終了重量)?
これには、各行の 2 つの列の差を含む新しい列が必要になるため、現在は no に傾いています。選択操作の条件で算術演算が許可されていないため、当初の意図どおりに実行しても機能しません (たとえば、SIGMA (c1 - c2 < c3 - c4)(Table) は許可されません)。
開示:これは宿題の質問の一部です。
2 つの列の最大差を取得することは可能ですか (たとえば、開始重量と終了重量)?
これには、各行の 2 つの列の差を含む新しい列が必要になるため、現在は no に傾いています。選択操作の条件で算術演算が許可されていないため、当初の意図どおりに実行しても機能しません (たとえば、SIGMA (c1 - c2 < c3 - c4)(Table) は許可されません)。
開示:これは宿題の質問の一部です。
計画どおりに実行できますが、そのためには一般化された投影が必要です。一般化された射影は演算子です
Π(E1, E2,..., En)R
ここで、R はリレーション、E1...En は a⊕b の形式の式です。ここで、a と b は R の属性または定数であり、⊕ はそれらの間の任意の二項演算子です。結果は、属性 E1...En との関係になります。
これにより、違いを新しい関係 (R' := Π(xy)R) に射影し、計画どおりに最大値を見つけることができます。
一般化された射影の使用が許可されていない場合、射影の定義では属性名のみが許可され、選択の定義では属性名のみが許可されているため、属性を別の属性から実際に減算したり、実際にそれらから何かを計算したりする手段はないと思います。 a と b が属性または定数であり、θ が二項関係演算子である形式 aθb の式のみ (これはある意味で論理的です。なぜなら、関係 R(X,Y) がある場合、X または Y の型であり、それらに対する操作はまったく無意味です)。
一般化された射影は、リレーショナル代数の優れた拡張機能だと思います。それは明らかに実生活で非常に有用であり、より科学的な観点からでも擁護することができます: "X > 50" のような値で二項条件演算子を許可する場合、型について既に仮定を行っており、その点をレンダリングしています。つまらない。ただし、インストラクターは同意しない場合があります。
現実の世界でこれを実行しようとしている場合は、次のようなサブクエリ(またはビューとほぼ同じ)を使用してこれを実行できるはずです。
select max (diff) from (
select high - low as diff from blah blah blah
)
これが関係代数の抽象的な世界に当てはまるかどうか、私には言えませんでした。私はそれらの気の現実世界の問題を修正するのに忙しすぎます:-)