Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

क्या mysql में Oracle के विश्लेषणात्मक कार्यों के बराबर है?

बस आपको यह बताना चाहता था कि विश्लेषणात्मक कार्यों की नकल करने के लिए आप MySQL में चर का उपयोग कर सकते हैं। उदाहरण के लिए, SUM OVER इस प्रकार किया जा सकता है:


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

आप दो बड़े बदलावों पर ध्यान देंगे जो विभाजन प्रभाव को पूरा करने के लिए किए जाने थे:

  1. मुख्य तालिका (tbl ) एक उप चयन में ORDER BY . के साथ संलग्न है खंड। यह आवश्यक है क्योंकि जब MySQL @account करने के लिए जाता है परिवर्तनीय परीक्षण मूल्यों को पहले से ही आदेश देने की आवश्यकता है। यदि ऐसा नहीं होता, तो आपको गलत योग मान और साथ ही खाता मान प्राप्त होंगे।

  2. एक 'अतिरिक्त' कॉलम है जिसका उपनाम as _ . है . परिणामों का उपयोग करते समय आप इस कॉलम को अनदेखा कर सकते हैं, लेकिन @account . का क्रम जाँच और परिवर्तन @sum . के बाद होना चाहिए जाँच करें और बदलें।

    इसके साथ ही, आप अपने कॉलम को फिर से क्रमित करने का विकल्प चुन सकते हैं यदि आपको खाता अंतिम होने पर कोई आपत्ति नहीं है। यह पहला account . निकाल कर किया जाता है कॉलम क्योंकि यह अंतिम _ . के साथ डुप्लीकेट है कॉलम और फिर स्पष्ट रूप से उपनाम का नाम बदल दिया _ account . के लिए .

संसाधन:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में विदेशी कुंजी की मूल बातें?

  2. MySQL वर्कबेंच का उपयोग करके MySQL को कैसे रोकें / प्रारंभ करें

  3. SQL DELETE के साथ WHERE कंडीशन के लिए एक और टेबल में शामिल हों

  4. बिना पासवर्ड प्रॉम्प्ट के उबंटू पर MySQL इंस्टॉल करें

  5. PHP के साथ एक कथन में एकाधिक SQL क्वेरी निष्पादित करना