Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Klauzula GROUP BY z aliasem?

ZAKTUALIZOWANO2

  1. Wygląda na to, że nie musisz uwzględniać TotalSales w GROUP BY. Patrząc na twoje zapytanie, to po prostu nie ma sensu. Po prostu porzuć to z wewnętrznego wyboru.

  2. Aby uwzględnić książki, które nie zostały sprzedane, musisz użyć połączenia zewnętrznego

Mając to na uwadze, Twoje zapytanie może wyglądać tak

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;

Przykładowe wyjście:

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

Oto SQLFiddle demo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak sobie z tym poradzić Serwer MySQL działa z opcją --secure-file-priv, więc nie może wykonać tej instrukcji na komputerze Mac

  2. Woocommerce pobierz identyfikator produktu za pomocą kodu SKU produktu

  3. Jak zaimportować plik Excel do bazy danych mysql z PHP

  4. MySQL, jak sprawić, by wartość wygasła?

  5. Przejście z MySQL 5.7 do MySQL 8.0 — co powinieneś wiedzieć