Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

SQLの割り算についてまとめています。

SQLの割り算の演算子は、「/」

SQLの割り算は、「/」を使います。/演算子で返される実際の値は、1 番目の式を 2 番目の式で除算して得られる商になります。以下は、MySQLでの実行例です。

mysql> select 3/2;
+--------+
| 3/2    |
+--------+
| 1.5000 |
+--------+
1 row in set (0.00 sec)

mysql> select 2/3;
+--------+
| 2/3    |
+--------+
| 0.6667 |
+--------+
1 row in set (0.00 sec)

mysql> select 9/3;
+--------+
| 9/3    |
+--------+
| 3.0000 |
+--------+
1 row in set (0.00 sec)

selectで取得したカラムに対して、割り算を適用してみましょう。以下は、employees(社員)テーブルと、salaries(年収)テーブルをjoinして、社員番号(emp_no)、姓名の姓(first_name)、姓名の名(last_name)、平均月収(salary/12)を取得した例です。

mysql> select employees.emp_no, first_name, last_name, salary/12
from employees
left join  salaries 
on employees.emp_no = salaries.emp_no and salaries.to_date='9999/01/01' limit 10;

+--------+------------+-----------+-----------+
| emp_no | first_name | last_name | salary/12 |
+--------+------------+-----------+-----------+
|  10001 | xGeorgi    | Facello   | 7413.1667 |
|  10002 | Bezalel    | Simmel    | 6043.9167 |
|  10003 | Parto      | Bamford   | 3609.2500 |
|  10004 | Chirstian  | Koblick   | 6171.4167 |
|  10005 | Kyoichi    | Maliniak  | 7891.0000 |
|  10006 | Anneke     | Preusig   | 4979.5833 |
|  10007 | Tzvetan    | Zielinski | 7339.1667 |
|  10009 | Sumant     | Peac      | 7867.4167 |
|  10010 | Duangkaew  | Piveteau  | 6693.6667 |
+--------+------------+-----------+-----------+

【関連記事】
SQLのSELECT句で計算してみよう!算術演算子を使った加工処理とは!

SQLの割り算での剰余の求め方

SQLで割り算の余り(剰余)を求めるには、modもしくは、%を使います。以下は、MySQLの例です。

mysql> select 9 mod 2;
+---------+
| 9 mod 2 |
+---------+
|       1 |
+---------+
1 row in set (0.00 sec)

mysql> select 10 mod 2;
+----------+
| 10 mod 2 |
+----------+
|        0 |
+----------+
1 row in set (0.00 sec)

mysql> select 9 % 2;
+-------+
| 9 % 2 |
+-------+
|     1 |
+-------+
1 row in set (0.00 sec)

なお、Oracleでは%演算子は使えません。剰余を求める場合は、modを使用します。

modはMySQL、Oracle、SQL Server、PostgreSQLなど主要なDBMSで使用可能なので、流用等を考えると、剰余はmodを使ったほうが良いでしょう。

SQLの割り算 SQL Serverでの整数同士での除算に注意

Microsoft SQL Serverの仕様です。整数同士の除算をおこなうと、結果が整数になります。

関連)(除算) (Transact-SQL) – SQL Server | Microsoft Docs

整数型の Aを整数型の B で除算すると、結果は小数部が切り捨てられた整数になるんですね。

select 6/4;

-----
1

上記の場合、6/4=1.5になるはずですが、SQL Serverでは小数部が切り捨てられて1になってしまいます。

なお、もともとデータ型がfloat型のカラムを整数で割り算しても、上記の問題は起こりません。以下は、SaleQuotaというカラムを12で割り算した例です。

-- Uses AdventureWorks  
  
SELECT s.BusinessEntityID AS SalesPersonID, FirstName, LastName, SalesQuota, SalesQuota/12 AS 'Sales Target Per Month'  
FROM Sales.SalesPerson AS s   
JOIN HumanResources.Employee AS e   
    ON s.BusinessEntityID = e.BusinessEntityID  
JOIN Person.Person AS p   
    ON e.BusinessEntityID = p.BusinessEntityID;  

SalesPersonID FirstName    LastName          SalesQuota  Sales Target Per Month  
------------- ------------ ----------------- ----------- ------------------  
274           Stephen      Jiang             NULL        NULL  
275           Michael      Blythe            300000.00   25000.00  
276           Linda        Mitchell          250000.00   20833.3333  
277           Jillian      Carson            250000.00   20833.3333  

SQLの割り算 まとめ

ポテパンダの一言メモ
  • SQLの割り算の演算子は「/」(スラッシュ)
  • SQLの剰余はmodもしくは、演算子%で求められる
  • SQL Serverでの割り算は、整数同士の割り算をすると小数点部が切り捨てられる。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。