今回は、Oracle・MySQL・PostgreSQL・SQL Serverの各データベース上でのgroup by文を試してみた。結果、MySQLのみ、group by句で指定していない項目をselect句に指定しても、エラーにならないことが判明した。
前提条件
下記記事のsalesテーブルの作成が完了していること。
各DB上でgroup by文を試してみた(データ準備編)今回は、Oracle・MySQL・PostgreSQL・SQL Serverの各データベース上でのgroup by文を試すための、sal...
やってみたこと
Oracleの場合の実行結果
1) group by句で指定した項目と(集計項目以外の)select句で指定した項目が同一の場合
1 2 3 4 | 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 |
2) (集計項目以外の)select句に、group by句で指定した項目以外が含まれる場合
1 2 3 4 | 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 |
3) (集計項目以外の)select句が、group by句で指定した項目より少ない場合
1 2 3 4 | select sale_date, sum(sales_amount) as sum_sales_amount from sales group by sale_date, product_name order by sale_date |
MySQLの場合の実行結果
1) group by句で指定した項目と(集計項目以外の)select句で指定した項目が同一の場合
1 2 3 4 | 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 |
2) (集計項目以外の)select句に、group by句で指定した項目以外が含まれる場合
1 2 3 4 | 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 |
3) (集計項目以外の)select句が、group by句で指定した項目より少ない場合
1 2 3 4 | select sale_date, sum(sales_amount) as sum_sales_amount from world.sales group by sale_date, product_name order by sale_date |
PostgreSQLの場合の実行結果
1) group by句で指定した項目と(集計項目以外の)select句で指定した項目が同一の場合
1 2 3 4 | 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 |
2) (集計項目以外の)select句に、group by句で指定した項目以外が含まれる場合
1 2 3 4 | 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 |
3) (集計項目以外の)select句が、group by句で指定した項目より少ない場合
1 2 3 4 | select sale_date, sum(sales_amount) as sum_sales_amount from sales group by sale_date, product_name order by sale_date |
SQL Serverの場合の実行結果
1) group by句で指定した項目と(集計項目以外の)select句で指定した項目が同一の場合
1 2 3 4 | 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 |
2) (集計項目以外の)select句に、group by句で指定した項目以外が含まれる場合
1 2 3 4 | 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 |
3) (集計項目以外の)select句が、group by句で指定した項目より少ない場合
1 2 3 4 | select sale_date, sum(sales_amount) as sum_sales_amount from dbo.sales group by sale_date, product_name order by sale_date |