• 締切済み

SQL文の作り方、SUM関数を2回使いたいです。

こんばんわ、SQL分の勉強をしています。以下のSQL文を見てください。 select sum(dat1) from daityou,book (SELECT book.author,book.bookname,book.money*daityou.cnt AS dat1 FROM book, daityou where book.bookname=daityou.bookname); 内容は、著者と本のタイトルと本ごとの売り上げの一覧表を作成し、さらに著者毎に売り上げを集計したいのですが、エラーになります。 どのような文を作成すればいいのでしょうか? SUM関数を2回使わなくてもいいです。 よろしくお願いします。

みんなの回答

  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.2

著者と本のタイトルと本ごとの売り上げの一覧表を作成し、さらに著者毎の売り上げの一覧表を作成し 著者と本のタイトルで並べ替えるとてっとり早い。 例) SELECT book.author as author,book.bookname as name,sum(book.money*daityou.cnt) as uriage FROM book, daityou where book.bookname=daityou.bookname group by book.author ,book.bookname union all SELECT book.author as author,Null as name,sum(book.money*daityou.cnt) as uriage FROM book, daityou where book.bookname=daityou.bookname group by book.author order by author,name ただし、これでは著者別合計が一番上にでてくるかも。 一番上に出てきた場合に一番下にだしたければ、 select author,name,uriage from ( SELECT '1' as jyunban,book.author as author,book.bookname as name,sum(book.money*daityou.cnt) as uriage FROM book, daityou where book.bookname=daityou.bookname group by book.author ,book.bookname union all SELECT '2' as jyunban, book.author as author,Null as name,sum(book.money*daityou.cnt) as uriage FROM book, daityou where book.bookname=daityou.bookname group by book.author ) order by author,jyunban,name といった具合。

すると、全ての回答が全文表示されます。
回答No.1

得たい結果が2種類あるように読み取れるのですが、それを1つのSQLで得たいという事でしょうか? 1つ目:著者・及びその著者の本毎の売上一覧表 2つ目:著者毎の売上一覧表 また、出力結果のイメージを記してもらえると助かります。

すると、全ての回答が全文表示されます。

関連するQ&A