Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Mệnh đề GROUP BY với bí danh?

CẬP NHẬT2

  1. Có vẻ như bạn không cần đưa TotalSales vào GROUP BY. Nhìn vào truy vấn của bạn, nó không có ý nghĩa gì cả. Chỉ cần loại bỏ nó khỏi lựa chọn bên trong.

  2. Để bao gồm những cuốn sách chưa được bán, bạn phải sử dụng một kết nối bên ngoài

Điều đó được cho là truy vấn của bạn có thể trông giống như

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;

Đầu ra mẫu:

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

Đây là SQLFiddle bản 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. chèn trường khóa chính `id` autoincrement một cách rõ ràng trong laravel 5.2

  2. Làm thế nào để sử dụng mysqli_query () trong PHP?

  3. Cách tìm dữ liệu từ tuần trước trong MySQL

  4. Cảnh báo:mysqli_query () mong đợi tham số 1 là mysqli, tài nguyên đã cho

  5. Điền vào các trình đơn thả xuống với các mục nhập MySQL