減算は数値計算だけのものではありません!SQL Server には、数値と日付の両方の減算に役立つ組み込み関数や演算子がいくつも用意されています。また、紙とペンで計算する場合とは違い、常に NULL のことを考えておく必要があります。さっそく例を見ていきましょう。
SQL Server の減算操作を理解する
SQL Server で減算操作が使われるのは、主に 2 つの場面です。数値データの算術演算と、日時の値の操作です。SQL Server 内で直接計算値を生成したいときに、値の減算はよく役立ちます。
基本的な減算
概念をわかりやすくするために、シンプルな減算から始めましょう。「TotalAmount」と「DiscountAmount」を含む「Orders」というテーブルがあるとします。
SELECT TotalAmount, DiscountAmount,
TotalAmount - DiscountAmount AS ActualAmount
FROM Orders;
この基本的な例では、「TotalAmount」から「DiscountAmount」を引き、その結果を「ActualAmount」として出力しています。
時間間隔での減算操作
減算は、2 つの日時の差を求める際にもよく使われます。SQL Server には smalldatetime、datetime、datetime2、datetimeoffset といった日時型があります。日付の減算には DATEDIFF() 関数を使用できます。
例:
SELECT OrderID, OrderDate,
DATEDIFF(day, OrderDate, GETDATE()) AS DaysElapsed
FROM Orders;
このコマンドは、各注文が行われてから今日までの経過日数を計算して表示します(GETDATE は今日の日付を返します)。
SQL Server で減算を使って結果セットを集計する
減算を使った結果セットの集計も、SQL Server ではよく行われます。たとえば、ある期間の売上合計を集計し、同じ期間に適用された割引の合計を差し引きたい場合があります。
例:
SELECT
( SELECT SUM(TotalAmount) FROM Orders where OrderDate like '2022-%' ) -
( SELECT SUM(DiscountAmount) FROM Orders where OrderDate like '2022-%' ) as NetSales
上のコマンドは、売上合計から割引合計を差し引いて、2022 年の純売上を表示します。
NULL の扱い
SQL Server では、NULL から減算すると NULL が返されます。NULL を 0 と同じように扱いたい場合は、結果に予期しない NULL が含まれないよう、こうしたケースを適切に処理することが重要です。ただし、常にそうすべきとは限らないので、状況に応じて判断してください。
SELECT OrderID,
ISNULL(TotalAmount, 0) - ISNULL(DiscountAmount, 0) AS NetAmount
FROM Orders;
これであなたも減算のプロです
SQL Server で値を効果的に減算する方法は他にもあります。これらのコマンドをいろいろ試しながら、ぜひ自分でもさらに探求してみてください。クエリを組み立てるたびに、SQL Server の習得に一歩ずつ近づいていきます。楽しいクエリライフを!
この記事は SQL Server を対象に書かれています。そのため、すべてのコマンドと説明は SQL Server に関するものです。他のデータベースエンジンでこれらのコマンドがどのように動作するかについては、各データベースの公式ドキュメントを参照してください。
Beekeeper Studioは無料のオープンソースのデータベースGUIです
これまで使った中で最高のSQLクエリ&エディタツールです。データベースの管理に必要なものがすべて揃っています。 - ⭐⭐⭐⭐⭐ Mit
Beekeeper Studioは高速で直感的、そして使いやすいツールです。多数のデータベースに対応し、Windows、Mac、Linuxで快適に動作します。
Beekeeper Studio 利用者の声
「Beekeeper Studio で、これまでの SQL ワークフローが完全に置き換わりました。高速で直感的、データベース作業がまた楽しくなりました。」
「多くのデータベース GUI を試してきましたが、Beekeeper は機能とシンプルさのバランスが絶妙です。とにかくちゃんと動きます。」