अपडेट किया गया2
-
ऐसा लगता है कि आपको GROUP BY में TotalSales को शामिल करने की आवश्यकता नहीं है। आपकी क्वेरी को देखते हुए इसका कोई मतलब नहीं है। बस इसे आंतरिक चयन से हटा दें।
-
उन पुस्तकों को शामिल करने के लिए जो बेची नहीं गई हैं, आपको बाहरी जुड़ाव का उपयोग करना होगा
कहा जा रहा है कि आपकी क्वेरी कुछ इस तरह दिख सकती है
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 डेमो