2016-05-28 3 views
1
Select Category, Books.ISBN, 
Orderitems.Quantity * (Books.Retail - Books.Cost) AS Category_Profit 
From BOoks 
INNER JOIN Orderitems 
ON BOOKS.ISBN=ORDERITEMS.ISBN 

例の出力として出力をマージ:などなどは1つの

Category   ISBN   Category_Profit 
Family life   1234     50 
Family Life   1234     50 
Family Life   1234     100 
Fitness    4321     10 
Fitness    4321     20 

にはどうすれば出力は1行に各カテゴリのすべての値を計算することができますか?

すなわち

Family Life  1234  200 
Fitness   4321  30 

答えて

0

使用GROUP_BY & SUM、構文:

SELECT column_name, SUM(column_name) 
FROM table_name 
WHERE column_name operator value 
GROUP BY column_name; 

を参照してください:あなたのテーブルの上にSQL GROUP_BY

をあなたが実行することがあります。

Select Category, ISBN, Sum(Category_Profit) From Table1 
group by Category, ISBN; 

表1:

Category   ISBN   Category_Profit 
Family life   1234     50 
Family Life   1234     50 
Family Life   1234     100 
Fitness    4321     10 
Fitness    4321     20 

出力:

| Category | ISBN | Sum(Category_Profit) | 
|-------------|------|----------------------| 
| Family life | 1234 |     200 | 
|  Fitness | 4321 |     30 | 

Fiddle

+0

カテゴリーファミリーライフに2つの異なるISBN番号が付いていたらどうなりますか? ISBN 1234と1235は両方ともカテゴリーファミリーライフの対象です。カンマで区切られた同じ行に両方を表示したいとしますか?それは可能でしょうか? – aofe1337

+0

はい、そうすることができます。これを読んでください:[GROUP BYを組み合わせて列を結合する](http://stackoverflow.com/questions/15154644/group-by-to-combine-concat-a-column) –

1

すでに出発点として、これを持っているため、一時テーブルとして正確にあなたが持っているものを使用し、そしてからデータを取得それ:

Select Category, ISBN, Sum(Category_Profit) From 
(
select Category, Books.ISBN as ISBN, 
Orderitems.Quantity * (Books.Retail - Books.Cost) AS Category_Profit 
From Books 
INNER JOIN Orderitems 
ON BOOKS.ISBN=ORDERITEMS.ISBN 
) temp 
group by Category, ISBN 

eデータを本当にうまく扱うことができます。カテゴリーとISBNでグループ化し、対応する利益を持つそれらの列のすべての固有のペアを取得します。

サブクエリを使用したくない場合は、クエリで合計することができます(ただし、変更前に既存のクエリをサブクエリとして使用すると便利です)

あなたの問題を解決するために使用することができることで
select Category, Books.ISBN, 
SUM(Orderitems.Quantity * (Books.Retail - Books.Cost)) AS Category_Profit 
From Books 
INNER JOIN Orderitems 
ON BOOKS.ISBN=ORDERITEMS.ISBN 
temp 
group by Category, Books.ISBN 
+0

私は今何が違うのですか?各カテゴリ e Cat、ISBN、Price、 (Comp 1234 50) (Comp 3333 50) これらの2つを再度マージするには、group byまたはsumの別の使用ですか?私はおそらく、カテゴリ – aofe1337

+0

のすべてのISBNを計算する方法を見つけることができますので、私の最初のコードセットはあなたのテーブルからデータを引き出す方法を示しています。あなたの正確なクエリを取るが、その周りに括弧を入れてください(あなたのクエリ) – EoinS

+0

その後、cat、ISBN、sum(Category_profit)をcat(cat、isbn) – EoinS

1

グループ

注:グループで句によって、テーブルの行のセットは、特定の列に基づいており、select句のグループカラムによるかのいずれか分類することができます集計関数(SUM、MIN、MAX、Countなど)を表示することができます。

リファレンス: http://www.dofactory.com/sql/group-by

次のようにグループを使用してください。これが問題を解決することを願っています。

Select Category, Books.ISBN, 
SUM(Orderitems.Quantity * (Books.Retail - Books.Cost)) AS Category_Profit 
From BOoks 
INNER JOIN Orderitems 
ON BOOKS.ISBN=ORDERITEMS.ISBN 
Group by Category,ISBN 
関連する問題