sql >> Database >  >> RDS >> Mysql

GROUP BY-clausule met alias?

GE-UPDATE2

  1. Het lijkt erop dat u TotalSales niet hoeft op te nemen in GROUP BY. Als je naar je vraag kijkt, slaat het gewoon nergens op. Gooi het gewoon uit de innerlijke selectie.

  2. Om boeken op te nemen die niet zijn verkocht, moet je een outer join gebruiken

Dat gezegd hebbende, zou uw vraag er zo uit kunnen zien

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;

Voorbeelduitvoer:

+-------------+-----------+----------------+-------------+
| 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      |
+-------------+-----------+----------------+-------------+

Hier is SQLFiddle demo



  1. Codeerfout tijdens het schrijven van gegevens van Excel-bestand naar database (mysql)

  2. Associatietabellen implementeren

  3. Wat is de snelste manier om een ​​bulkinvoeging in Postgres te doen?

  4. MYSQL-update met WHERE SELECT subquery-fout