DB

各DB上でgroup by文を試してみた(実践編)

今回は、Oracle・MySQL・PostgreSQL・SQL Serverの各データベース上でのgroup by文を試してみた。結果、MySQLのみ、group by句で指定していない項目をselect句に指定しても、エラーにならないことが判明した。

前提条件

下記記事のsalesテーブルの作成が完了していること。

各DB上でgroup by文を試してみた(データ準備編)今回は、Oracle・MySQL・PostgreSQL・SQL Serverの各データベース上でのgroup by文を試すための、sal...

 やってみたこと

  1. Oracleの場合の実行結果
  2. MySQLの場合の実行結果
  3. PostgreSQLの場合の実行結果
  4. SQL Serverの場合の実行結果

 

Oracleの場合の実行結果

1) group by句で指定した項目と(集計項目以外の)select句で指定した項目が同一の場合

select sale_date, product_name, sum(sales_amount) as sum_sales_amount 
from sales 
group by sale_date, product_name 
order by sale_date, product_name
Oracle_groupby実行結果1

2) (集計項目以外の)select句に、group by句で指定した項目以外が含まれる場合

select sale_date, product_name, place_name, sum(sales_amount) as sum_sales_amount 
from sales 
group by sale_date, product_name 
order by sale_date, product_name, place_name
Oracle_groupby実行結果2

3) (集計項目以外の)select句が、group by句で指定した項目より少ない場合

select sale_date, sum(sales_amount) as sum_sales_amount 
from sales 
group by sale_date, product_name 
order by sale_date
Oracle_groupby実行結果3



MySQLの場合の実行結果

1) group by句で指定した項目と(集計項目以外の)select句で指定した項目が同一の場合

select sale_date, product_name, sum(sales_amount) as sum_sales_amount 
from world.sales 
group by sale_date, product_name 
order by sale_date, product_name
MySQL_groupby実行結果1

2) (集計項目以外の)select句に、group by句で指定した項目以外が含まれる場合

select sale_date, product_name, place_name, sum(sales_amount) as sum_sales_amount 
from world.sales 
group by sale_date, product_name 
order by sale_date, product_name, place_name
MySQL_groupby実行結果2

3) (集計項目以外の)select句が、group by句で指定した項目より少ない場合

select sale_date, sum(sales_amount) as sum_sales_amount 
from world.sales 
group by sale_date, product_name 
order by sale_date
MySQL_groupby実行結果3



PostgreSQLの場合の実行結果

1) group by句で指定した項目と(集計項目以外の)select句で指定した項目が同一の場合

select sale_date, product_name, sum(sales_amount) as sum_sales_amount 
from sales 
group by sale_date, product_name 
order by sale_date, product_name
PostgreSQL_groupby実行結果1

2) (集計項目以外の)select句に、group by句で指定した項目以外が含まれる場合

select sale_date, product_name, place_name, sum(sales_amount) as sum_sales_amount 
from sales 
group by sale_date, product_name 
order by sale_date, product_name, place_name
PostgreSQL_groupby実行結果2

3) (集計項目以外の)select句が、group by句で指定した項目より少ない場合

select sale_date, sum(sales_amount) as sum_sales_amount 
from sales 
group by sale_date, product_name 
order by sale_date
PostgreSQL_groupby実行結果3



SQL Serverの場合の実行結果

1) group by句で指定した項目と(集計項目以外の)select句で指定した項目が同一の場合

select sale_date, product_name, sum(sales_amount) as sum_sales_amount 
from dbo.sales 
group by sale_date, product_name 
order by sale_date, product_name
SQLServer_groupby実行結果1

2) (集計項目以外の)select句に、group by句で指定した項目以外が含まれる場合

select sale_date, product_name, place_name, sum(sales_amount) as sum_sales_amount 
from dbo.sales 
group by sale_date, product_name 
order by sale_date, product_name, place_name
SQLServer_groupby実行結果2

3) (集計項目以外の)select句が、group by句で指定した項目より少ない場合

select sale_date, sum(sales_amount) as sum_sales_amount 
from dbo.sales 
group by sale_date, product_name 
order by sale_date
SQLServer_groupby実行結果3