TOP

SQL レッスン 7. データ処理関数

YouLibreCalc for Excel logo

ほとんどのプログラミング言語と同様、SQL にはデータを処理するための関数があります。 SQL ステートメントとは異なり、関数はすべての種類の DBMS に対して標準化されていないことに注意してください。つまり、データに対して同じ操作を実行するために、異なる DBMS には独自の関数名があります。これは、ある DBMS で記述されたクエリ コードが別の DBMS では機能しない可能性があることを意味し、将来的にはこの点を考慮する必要があります。これは主に、テキスト値の処理、データ型の変換、日付の操作を行う関数に当てはまります。


ほとんどの DBMS は、次の関数タイプの標準セットをサポートしています。

  • テキスト処理 (テキストから文字の一部を抽出する、テキストの長さを決定する、文字を大文字または小文字に変換するなど) に使用されるテキスト関数。
  • 数値関数。これらは数値に対して数学的演算を実行するために使用されます。
  • 日付と時刻の関数 (日付と時刻の操作が実行され、日付の間の期間が計算され、日付が正しいかどうかがチェックされます。など)。
  • 統計関数(最大値/最小値、平均値の計算、数量と合計の計算など);
  • システム機能 (DBMS、ユーザーなどに関するさまざまな種類のサービス情報を提供します)。
  • 1. テキスト処理用の SQL 関数

    MS Access の SQL 実装には、テキスト処理用の次の関数があります。

    関数 説明
    Left() テキスト内の文字を左から選択します
    Right() 右側のテキスト内の文字を選択します
    Mid() テキストの途中から文字を選択します
    UCase() 文字を大文字に変換します
    LCase() 文字を小文字に変換します
    LTrim() テキストの左側にある空白文字をすべて削除します
    RTrim() テキストの右側にある空白文字をすべて削除します
    Trim() テキストの両側からすべての空白文字を削除します

    UCase() 関数を使用して製品名を大文字に変換してみましょう。

    Run SQLSELECT Product, UCase(Product) AS Product_UCase 
    FROM Sumproduct
    

    LEFT() 関数を使用して、テキストの最初の 3 文字を区切ってみましょう。

    Run SQLSELECT Product, LEFT(Product, 3) AS Product_LEFT 
    FROM Sumproduct
    

    2. 数値を処理するための SQL 関数

    数値処理関数は、数値データに対して数学的演算を実行するように設計されています。これらの関数は代数的および幾何学的計算用に設計されているため、日付と時刻を処理する関数よりも使用頻度ははるかに低くなります。ただし、数値関数は SQL のすべてのバージョンで最も標準化されています。数値関数のリストを見てみましょう。

    関数 説明
    SQR() 指定された数値の平方根を返します
    ABS() 数値の絶対値を返します
    EXP() 指定された数値の指数を返します
    SIN() 指定された角度のサインを返します
    COS() 指定された角度のコサインを返します
    TAN() 指定された角度のタンジェントを返します

    ここでは主な機能の一部のみをリストしましたが、サポートされている機能の完全なリストと詳細な説明については、いつでも DBMS ドキュメントを参照してください。

    たとえば、SQR() 関数を使用して、Amount 列の数値の平方根を取得するクエリを作成してみましょう。

    Run SQLSELECT Amount, SQR(Amount) AS Amount_SQR 
    FROM Sumproduct
    
    MySQL は、SQRT() 関数を使用して数値の平方根を取得します。

    3. 日時処理用のSQL関数

    日付と時刻の操作関数は、最も重要で頻繁に使用される SQL 関数の 1 つです。データベースでは、日付と時刻の値は特別な形式で保存されるため、追加の処理を行わずに直接使用することはできません。各 DBMS には日付を処理するための独自の関数セットがありますが、残念ながら、日付を他のプラットフォームや SQL 実装に転送することはできません。

    MS Access で日付と時刻を処理するためのいくつかの関数のリスト:

    関数 説明
    DatePart() 日付の一部を返します: 年、四半期、月、週、日、時、分、秒
    Year(), Month() それぞれ年と月を返します
    Hour(), Minute(), Second() 指定された日付の時、分、秒を返します。
    WeekdayName() 曜日の名前を返します

    DatePart() 関数がどのように動作するかの例を見てみましょう。

    SELECT Date1, DatePart("m", Date1) AS Month1 
    FROM Sumproduct
    

    DatePart() 関数には、日付の必要な部分を表示できる追加パラメーターがあります。この例では、月番号を表示するパラメータ「m」の値を使用しました(同様に、年 - 「yyyy」、四半期 - 「q」、日 - 「d」を表示できます)。週 - "w"、時間 - "h"、分 - "n"、秒 - "s" など)。

    4. SQL統計関数

    統計関数は、サンプリングせずに準備済みのデータを取得するのに役立ちます。これらの関数を含む SQL クエリは、さまざまなレポートの分析と生成によく使用されます。このような選択の例としては、テーブル内の行数の決定、特定のフィールドの値の合計の取得、テーブルの指定された列の最大値/最小値または平均値の検索などが挙げられます。また、統計関数は、記述に特別な変更を加えることなく、すべての DBMS でサポートされていることにも注意してください。

    DBMS Access の統計関数のリスト:

    関数 説明
    COUNT() テーブルまたは列の行数を返します。
    SUM() 列内の値の合計を返します
    MIN() 列内の最小値を返します
    MAX() 列内の最大値を返します
    AVG() 列の平均値を返します

    4.1 COUNT() 関数の使用例

    テーブル内のすべての行の数を返します。

    Run SQLSELECT COUNT(*) AS Count1 
    FROM Sumproduct
    

    Product フィールド内の空でないすべての行の数を返します。

    SELECT COUNT(Product) AS Count2 
    FROM Sumproduct
    

    2 つのクエリ間のパフォーマンスの違いを示すために、Product 列の値を 1 つ意図的に削除しました。

    4.2 SUM() 関数の使用例

    Run SQLSELECT SUM(Quantity) AS Sum1 
    FROM Sumproduct 
    WHERE Month = 'April'
    

    ご要望に応じて、4月の商品販売総額を表示させていただきました。

    Run SQLSELECT SUM(Quantity*Amount) AS Sum2 
    FROM Sumproduct
    

    ご覧のとおり、統計関数では、標準の算術演算子を使用して複数の列に対して計算を実行することもできます。

    4.3 MIN()関数の使用例

    Run SQLSELECT MIN(Amount) AS Min1 
    FROM Sumproduct
    

    4.4 MAX()関数の使用例

    Run SQLSELECT MAX(Amount) AS Max1 
    FROM Sumproduct
    

    4.5 関数AVG()の使用例

    Run SQLSELECT AVG(Amount) AS Avg1
    FROM Sumproduct