sql - एसक्यूएल:खाते की पंक्तियों के क्रम में एक समूह के भीतर कुल अभिलेख




postgresql group-by pyspark-sql (2)

select      a,sum(b)

from       (select   *
                    ,row_number () over (order by id)                as rn
                    ,row_number () over (partition by a order by id) as rnp

            from     t
            ) t

group by    a,rn - rnp    

order by    min(id)  
;          

पी.एस.
मैं एक निरंतर होने के लिए आईडी पर भरोसा नहीं कर रहा हूँ

मेरे पास निम्न संरचना की एक तालिका है

| id | a | b |
| 1  | 1 | 1 |
| 2  | 1 | 5 |
| 3  | 2 | 2 |
| 4  | 2 | 3 |
| 5  | 2 | 5 |
| 6  | 1 | 3 |
| 7  | 1 | 7 |
| 8  | 3 | 1 |
| 9  | 2 | 0 |
| 10 | 4 | 8 |

और कॉलम "ए" में प्रत्येक समूह के भीतर कॉलम "बी" में राशि की गणना करने की आवश्यकता है, लेकिन पंक्तियों के क्रम को ध्यान में रखते हुए, पहले हमें a == 1 ( id 1 और 2 के लिए 1 + 5 जोड़ना चाहिए) ), तो हम a = 2 ( id 3, 4, 5) और इसी तरह के लिए 2 + 3 + 5 जोड़ देंगे।

इस प्रकार, परिणाम में मुझे इस तरह की तालिका होना चाहिए

| a | sum(b) |
| 1 |   6    |
| 2 |   10   |
| 1 |   10   |
| 3 |   1    |
| 2 |   0    |
| 4 |   8    |

कृपया ऐसा करने के लिए SQL क्वेरी लिखने में मदद करें।


कॉलम की संख्या (और नाम भी) प्राप्त करने के लिए बस कॉलम () फ़ंक्शन का उपयोग करें

http://golang.org/pkg/database/sql/#Rows.Columns

और क्योंकि सीएसवी केवल तार हो सकता है, बस स्कैनर के लिए dest टाइप के रूप में एक [] बाइट प्रकार का उपयोग करें। डॉकू के अनुसार:

यदि किसी तर्क में टाइप किया गया है * [] बाइट, स्कैन उस तर्क में संबंधित डेटा की एक प्रति सहेजता है। प्रतिलिपि कॉलर के स्वामित्व में है और इसे संशोधित और अनिश्चित काल तक आयोजित किया जा सकता है।

डेटा को अपने वास्तविक प्रकार में परिवर्तित नहीं किया जाएगा। और इस [] बाइट से आप इसे स्ट्रिंग में परिवर्तित कर सकते हैं।

यदि आप सुनिश्चित हैं कि आपकी टेबल केवल बेस प्रकार (स्ट्रिंग, [] बाइट, शून्य, int (ओं), फ्लोट (ओं), बूल का उपयोग करें) आप सीधे स्ट्रिंग को स्ट्रिंग के रूप में पास कर सकते हैं

लेकिन यदि आप अन्य प्रकारों जैसे सरणी, enums, या इतने पर उपयोग करते हैं, तो डेटा स्ट्रिंग में परिवर्तित नहीं किया जा सकता है। लेकिन यह भी निर्भर करता है कि ड्राइवर इस प्रकार कैसे संभालता है। (कुछ महीने पहले उदाहरण के रूप में, पोस्टग्रेस ड्राइवर एरे को संभालने में सक्षम नहीं था, इसलिए वह हमेशा [] बाइट लौटा जहां मुझे इसे अपने आप बदलना था)







sql postgresql group-by pyspark-sql