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

MySQL - पिछली पंक्ति से मूल्य घटाना, समूह द्वारा

MySQL वेरिएबल्स के साथ काम करना बहुत अच्छा है, यह इनलाइन प्रोग्राम वेरिएबल असाइनमेंट की तरह है। सबसे पहले, FROM क्लॉज आपके लिए @ वेरिएबल्स को "घोषित" करता है, जो डिफॉल्ट रूप से रिक्त होता है। फिर अपेक्षित क्रम में रिकॉर्ड्स को क्वेरी करें जो आप उन्हें चाहते हैं। यह दोहराए गए सबक्वायरी के बजाय डेटा के माध्यम से एकल पास बनाता है जो समय गहन हो सकता है।

प्रत्येक पंक्ति पढ़ने के लिए, वर्तमान रिकॉर्ड के एसएन के साथ @lastSN की तुलना करें। यदि भिन्न है, तो हमेशा 0 लौटाएं। यदि यह समान है, तो साधारण अंतर की गणना करें। तुलना करने के बाद ही, अगले रिकॉर्ड की तुलना के लिए @lastSN और @lastValue को मौजूदा रिकॉर्ड के बराबर सेट करें।

select
      EL.SN,
      EL.Date,
      EL.Value, --remove duplicate alias
      if( @lastSN = EL.SN, EL.Value - @lastValue, 0000.00 ) as Consumption,
      @lastSN := EL.SN,
      @lastValue := EL.Value
   from
      EnergyLog EL,
      ( select @lastSN := 0,
               @lastValue := 0 ) SQLVars
   order by
      EL.SN,
      EL.Date


  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. डेटाबेस प्रॉक्सी फ़ेलओवर टाइम्स की तुलना करना - ProxySQL, MaxScale और HAProxy

  3. MyISAM और InnoDB का उपयोग कब करें?

  4. डेटा के दो सेट को दो अलग-अलग जहां क्लॉज के साथ वापस करने की आवश्यकता है

  5. MySQL में कर्मचारी प्रबंधन प्रणाली के लिए डेटाबेस डिजाइन करने के लिए गाइड