बस होने की आवश्यकता है आपको बताना चाहता था कि आप विश्लेषणात्मक कार्यों की नकल करने के लिए MySQL में चर का उपयोग कर सकते हैं।
SELECT amount,
@sum := @sum + amount as sum
FROM tbl
JOIN (SELECT @sum := 0) s
आप PARTITION BY
चाहते हैं, यह संभव है, लेकिन सिर्फ एक थोड़ा और अधिक जटिल: योग से अधिक, उदाहरण के लिए, इस प्रकार किया जा सकता है। असल में, आप खाता (या जो भी आप विभाजन करना चाहते हैं) को देखने के लिए एक और @variable
जोड़ते हैं, खाता (या आपके चर) द्वारा क्रमबद्ध करें, और फिर खाते में परिवर्तन होने पर @sum
को रीसेट करें। इस प्रकार है:
SELECT account,
amount,
(case when @account != account then @sum := amount else @sum := @sum + amount end) as sum,
(case when @account != account then @account := account else @account end) as _
FROM (SELECT * FROM tbl ORDER BY account)
JOIN (SELECT @sum := 0) s
JOIN (SELECT @account := '') a
आप दो बड़े बदलाव है कि विभाजन प्रभाव पूरा करने के लिए किया जाना था ध्यान दें होगी:
मुख्य तालिका (tbl
) एक उप में encased है एक ORDER BY
साथ चयन खंड। यह जरूरी है क्योंकि जब MySQL @account
परिवर्तनीय परीक्षण करने के लिए जाता है तो मानों को पहले से ही आदेश दिया जाना आवश्यक है। यदि ऐसा नहीं होता है, तो आपको गलत योग मान और खाता मान भी मिलेंगे।
एक 'अतिरिक्त' कॉलम as _
उपनाम है। परिणाम का उपयोग करते समय आप इस कॉलम को अनदेखा कर सकते हैं, लेकिन @account
का ऑर्डर चेक और चेंज @sum
चेक और चेंज के बाद होना चाहिए।
इसके साथ ही, यदि आप खाते को अंतिम नहीं मानते हैं तो आप अपने कॉलम को फिर से व्यवस्थित करना चुन सकते हैं। यह पहले account
कॉलम को निकालकर किया जाता है क्योंकि यह अंतिम _
कॉलम के साथ डुप्लीकेट करता है और फिर स्पष्ट रूप से एलियाज्ड _
से account
का नाम बदल दिया जाता है।
संसाधन:
यदि यह विंडिंग फ़ंक्शंस की तरह है, तो नहीं: http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems – ripper234
यदि आप ओपन सोर्स डेटाबेस में विंडोिंग फ़ंक्शन चाहते हैं तो आपको PostgreSQL का उपयोग करने की आवश्यकता होगी। –