TOP

SQL レッスン 6. 計算 (計算) フィールド

なぜ計算フィールドを使用する必要があるのでしょうか?原則として、データベース内の情報は、データを構造化し操作する方が簡単であるため、個別のフラグメントの形式で表示されます。ただし、多くの場合、個々のデータではなく、すでに結合および処理された情報を使用する必要があります。たとえば、多くの場合、顧客の姓名を結合したり、表の異なる列にある住所要素を結合したり、テキストや個々の単語、文字、記号を処理したり、購入の総費用を合計したりする必要があります。 、データベース内の情報に関する統計を表示します。通常、データは個別の「チャンク」に保存されるため、クライアント プログラム側で追加の処理が必要になります。ただし、DBMS を利用して、すでに処理された情報を受け取ることは可能です。この場合、計算フィールドが役に立ちます。これらはクエリの実行時に自動的に作成され、テーブルにすでに存在する通常の列の外観とプロパティを持ちます。唯一の違いは、物理的に計算されるフィールドがないため、DB 内で追加のスペースを占有せず、DBMS の「ランダム メモリ」に一時的に存在することです。 DBMS 側で操作を実行する利点は、データ処理の速度です。


1. 数学的演算の実行

計算フィールドを使用する 1 つの方法は、選択したデータに対して数学的演算を実行することです。再び Sumproduct テーブルを使用して、これがどのように起こるかを例に挙げてみましょう。各製品の平均購入価格を計算する必要があるとします。これを行うには、Amount 列を Quantity (数量) に再配分する必要があります。

Run SQLSELECT DISTINCT Product, Amount/Quantity 
FROM Sumproduct

ご覧のとおり、DBMS はすべての製品名を選択し、クエリの実行中に作成された別の列にその平均コストを表示しました。また、一意の製品名を表示するために追加の演算子 DISTINCT を使用していることにも注目してください (これがないとレコードが重複してしまいます)。

2. 仮名の使用

前の例では、各商品の平均購入価格を計算し、その値を計算列に表示しました。ただし、このフィールドの名前は私たちにとって有益ではないため、将来的にはこのフィールドを参照するのが不便になります (DBMS がフィールド名に Expr1001 を付けました)。ただし、事前にクエリで名前を指定する、つまりエイリアスを与えることで、フィールドに独立して名前を付けることができます。前の例を書き直して、計算フィールドのエイリアスを指定してみましょう。

Run SQLSELECT DISTINCT Product, Amount/Quantity AS AvgPrice 
FROM Sumproduct

計算フィールドに独自の名前 AvgPrice が付けられていることがわかります。このために、演算子 AS を使用し、その後、必要な名前を指定しました。 SQL では基本的な数学演算 (+)、減算 (-)、乗算 (*)、除算 (/) のみがサポートされていることに注意してください。丸括弧を使用して操作の順序を変更することもできます。

エイリアスは、計算フィールドに名前を付けるためだけでなく、アクティブなフィールドの名前を変更するためにもよく使用されます。これは、アクティブなフィールドの名前が長い場合、または名前の情報が十分でない場合に必要になることがあります。

3. フィールドの接続(コンカチネーション)

数学的な演算に加えて、テキストを結合して別のフィールドに表示することもできます。テキストを接着 (連結) する方法を考えてみましょう。 MS Access の異なる列のテキストを接続するには、次のようにプラス演算子 (+) を使用します。

Run SQLSELECT Month + ' ' + Product AS NewField, Quantity  
FROM Sumproduct

この例では、2 つの列の値を結合し、結果を新しいフィールド NewField に出力しました。

MySQL 方言では、複数の列のテキストを接続 (連結) するためのプラス演算子 (+) はサポートされていません。この場合は、CONCAT() 関数を使用します。