मेरे पास नीचे दी गई तालिका है:

SELECT * FROM dashboard.reports WHERE date='2020-04-06';
+------+--------------+----------+----------+----------+
| # id |     date     | type     | quantity |  vendor  |
+------+--------------+----------+----------+----------+
| '11' | '2020-04-06' | '2520'   | '150'    | 'vendor1'  |
| '12' | '2020-04-06' | 'HG851'  | '200'    | 'vendor2' |
| '13' | '2020-04-06' | 'HG851'  | '200'    | 'vendor2' |
| '14' | '2020-04-06' | 'HG851A' | '400'    | 'vendor2' |
+------+--------------+----------+----------+----------+

मुझे विशेष दिन के लिए ग्रुप बाय वेंडर द्वारा मात्रा कॉलम की कुल गणना करनी है। तो नीचे मेरी क्वेरी है:

SELECT a.date, a.vendor, a.type, a.quantity, b.total FROM dashboard.reports a 
INNER JOIN 
(
    SELECT vendor, SUM(quantity) as total FROM dashboard.reports WHERE date = '2020-04-06' GROUP BY vendor
) b 
ON b.vendor = a.vendor WHERE date = '2020-04-06'

परिणाम: (यहां कुल '2020-04-06' की तारीख के लिए है)

+--------------+----------+----------+----------+-------+
|    # date    |  vendor  | type | quantity | total |
+--------------+----------+----------+----------+-------+
| '2020-04-0'  | 'vendor1'  | '2520'   | '150'    | '150' |
| '2020-04-06' | 'vendor2' | 'HG851'  | '200'    | '800' |
| '2020-04-06' | 'vendor2' | 'HG851'  | '200'    | '800' |
| '2020-04-06' | 'vendor2' | 'HG851A' | '400'    | '800' |
+--------------+----------+----------+----------+-------+

विक्रेता1 कुल ---> 150 विक्रेता2 कुल (200 + 200 + 400) ----> 800

उपरोक्त परिणाम एक विशेष दिन के लिए अपेक्षित रूप से काम कर रहा है। हालांकि, अगर मैं दो तिथियों के बीच रिकॉर्ड प्राप्त करना चाहता हूं ... मुझे यकीन नहीं है कि एक प्रश्न कैसे लिखा जाए। मैंने एक से नीचे की कोशिश की है, लेकिन कुल मुझे सभी दिनों के लिए मिल रहा है। मैं प्रत्येक दिन के लिए मात्रा कॉलम का कुल योग अलग से चाहता हूं।

SELECT a.date, a.vendor, a.type, a.quantity, b.total FROM dashboard.reports a 
INNER JOIN 
(
    SELECT vendor, SUM(quantity) as total FROM dashboard.reports WHERE  date >= '2020-04-06' AND date <= '2020-04-08' GROUP BY vendor
) b 
ON b.vendor = a.vendor WHERE date >= '2020-04-06' AND date <= '2020-04-08'
+--------------+----------+-------------+----------+---------+
|    # date    |  vendor  |  type   | quantity |  total  |
+--------------+----------+-------------+----------+---------+
| '2020-04-06' | 'vendor1'  | '2520'      | '150'    | '1250'  |
| '2020-04-06' | 'vendor2' | 'HG851'     | '200'    | '1400'  |
| '2020-04-06' | 'vendor2' | 'HG851'     | '200'    | '1400'  |
| '2020-04-06' | 'vendor2' | 'HG851A'    | '400'    | '1400'  |
| '2020-04-07' | 'vendor1'  | '2511'      | '200'    | '1250'  |
| '2020-04-07' | 'vendor1'  | '5120'      | '350'    | '1250'  |
| '2020-04-07' | 'vendor1'  | '2520'      | '150'    | '1250'  |
| '2020-04-07' | 'vendor1'  | '5114'      | '400'    | '1250'  |
| '2020-04-07' | 'vendor3'  | 'G-440G-A'  | '200'    | '20750' |
| '2020-04-07' | 'vendor3'  | '1240GA'    | '400'    | '20750' |
| '2020-04-07' | 'vendor3'  | '1440GP'    | '9000'   | '20750' |
| '2020-04-07' | 'vendor3'  | 'B-0404G-B' | '7000'   | '20750' |
| '2020-04-07' | 'vendor3'  | 'B2404GP'   | '2000'   | '20750' |
| '2020-04-07' | 'vendor3'  | 'G-881G-A'  | '2000'   | '20750' |
| '2020-04-08' | 'vendor3'  | 'G-881G-B'  | '150'    | '20750' |
| '2020-04-08' | 'vendor2' | 'HG851'     | '200'    | '1400'  |
| '2020-04-08' | 'vendor2' | 'HG851A'    | '400'    | '1400'  |
+--------------+----------+-------------+----------+---------+

क्या कोई इस में मेरी मदद कर सकता है? यदि मेरे द्वारा ऊपर लिखे गए प्रश्न पूरी तरह से गलत हैं, तो कृपया मुझे आगे बढ़ने के तरीके के बारे में मार्गदर्शन करें।

0
Cherry 9 अप्रैल 2020, 04:22

1 उत्तर

सबसे बढ़िया उत्तर

तिथि के अनुसार समूह भी। यानी: "विक्रेता द्वारा समूह, तिथि"

1
NeutralHandle 9 अप्रैल 2020, 01:30