sql >> データベース >  >> RDS >> Mysql

エイリアスを持つGROUPBY句?

    更新2

    1. GROUPBYにTotalSalesを含める必要はないようです。クエリを見ると、意味がありません。内側の選択からそれを捨てるだけです。

    2. 販売されていない本を含めるには、外部結合を使用する必要があります

    そうは言っても、クエリは次のようになります

    SELECT COALESCE(author_id, 'All Authors') author_id
         , COALESCE(book_id, IF(author_id IS NULL, 'All Books', 'Subtotal')) book_id
         , COALESCE(total_quantity, 'No books') total_quantity
         , COALESCE(total_sales, 'No Sales') total_sales   
     FROM 
    (    
     SELECT author_id 
          , b.book_id 
          , SUM(quantity) total_quantity  
          , SUM(quantity * order_price) total_sales   
       FROM book_authors b LEFT JOIN order_details d
         ON b.book_id = d.book_id
      WHERE author_sequence = 1           
      GROUP BY Author_id, Book_ID WITH ROLLUP  -- you don't need TotalSales here
    ) q;
    

    サンプル出力:

    +-------------+-----------+----------------+-------------+
    | author_id   | book_id   | total_quantity | total_sales |
    +-------------+-----------+----------------+-------------+
    | 1           | 1         | 12             | 278.50      |
    | 1           | 3         | No books       | No Sales    |
    | 1           | Subtotal  | 12             | 278.50      |
    | 3           | 2         | 5              | 75.75       |
    | 3           | Subtotal  | 5              | 75.75       |
    | All Authors | All Books | 17             | 354.25      |
    +-------------+-----------+----------------+-------------+
    

    こちらがSQLFiddle です。 デモ



    1. MicrosoftAccessテンプレートをダウンロードして使用する5つの大きな理由

    2. mysqlの遅いクエリ

    3. 別の列に対してリレーションテーブルをクエリする

    4. MySQL更新クエリでIfThenElseを使用する方法は?