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

MySQL दो मानों के अंतर का योग दिखाता है

आप लगातार पंक्तियों के बीच के अंतरों को जोड़ना चाहते हैं।
उदाहरण के लिए, मान लें कि आपके पास kwh कॉलम के लिए ये मान हैं। :

kwh
---
10
12
14
17
25
32

तो अंतर हैं:

kwh_diff
--------
0
12-10
14-12
17-14
25-17
32-25

इन अंतरों का योग 32-10 . के बराबर है जो है:

तो आपको विंडो फ़ंक्शन की आवश्यकता है FIRST_VALUE() इन मूल्यों को प्राप्त करने के लिए:

SELECT DISTINCT n.`name`, n.`customer_id`, m.`msn`, 
   FIRST_VALUE(m.kwh) OVER (PARTITION BY n.`customer_id` ORDER BY m.`data_date_time` DESC) -
   FIRST_VALUE(m.kwh) OVER (PARTITION BY n.`customer_id` ORDER BY m.`data_date_time` ASC) AS kwh_diff
FROM mdc_node n
INNER JOIN `mdc_meters_data` m ON n.`customer_id` = m.`cust_id`
WHERE n.`lft` = 5 AND n.`icon` NOT IN ('folder')
AND m.`data_date_time` BETWEEN NOW() - INTERVAL 30 DAY AND NOW()

और किसी सबक्वेरी या एकत्रीकरण की आवश्यकता नहीं है।

मैंने अपने कोड PARTITION BY n.customer_id . में रखा है क्योंकि आप इसे अपने कोड में उपयोग करते हैं, हालांकि आपको PARTITION BY n.customer_id, m.msn की आवश्यकता हो सकती है ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. त्रुटि संदेश अनटर्मिनेटेड स्ट्रिंग शाब्दिक

  2. पायथन के लिए MySQL स्थापित करने में सहायता चाहिए

  3. MySQL को MS Access में कनवर्ट करना

  4. मैं एंड्रॉइड कोड का उपयोग करके mysql डेटाबेस को कैसे कनेक्ट करूं और इसमें डेटा कैसे सम्मिलित करूं?

  5. तालिकाएं दिखाएं FULLTEXT अनुक्रमित स्तंभ