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

वाहन रीडिंग से घटाकर वाहनों के माइलेज की गणना करें

विशाल वसा अस्वीकरण: यह नहीं के साथ आता है वारंटी, लेकिन अगर मैंने आपकी समस्या को समझ लिया है और मैं कहीं गलत नहीं हूँ, निम्नलिखित पर विचार करें।

आपकी तालिका

. है
CREATE TABLE `foo` (`id` INTEGER, `date` DATE, `mileage` INT);

एक संभावित तरीका यह है कि पहले पिछले महीने की नवीनतम रीडिंग की तारीख के साथ एक दृश्य बनाएं (जिसे आप दूसरे नेस्टेड SELECT में बदल सकते हैं। यदि आप इतने इच्छुक हैं):

CREATE VIEW `past_month_readings` 
AS (SELECT `id`, 
    max(`date`) AS `latestreading`
    FROM `foo` 
    WHERE MONTH(`date`) = MONTH(NOW())-1 
    GROUP BY `id`);

इसके बाद

SELECT `currentmileages`.`id`, `currentmileage`-`previousmileage` FROM 
 (SELECT `foo`.`id`, `mileage` AS `currentmileage` 
  FROM `foo` 
  JOIN (SELECT `id`, MAX(`date`) AS `latestreading` FROM `foo` GROUP BY `id`) 
  AS `baz` 
  ON `foo`.`id` = `baz`.`id`
  AND `foo`.`date` = `baz`.`latestreading`
 ) 
AS `currentmileages`
JOIN
 (SELECT `foo`.`id`, `mileage` AS `previousmileage` 
  FROM `foo` 
  JOIN `past_month_readings` 
  ON `foo`.`id`=`past_month_readings`.`id` 
  AND `foo`.`date` = `past_month_readings`.`latestreading`)
AS `previousmileages`
ON
`currentmileages`.`id` = `previousmileages`.`id`

. के लिए
+------+------------+---------+
| id   | date       | mileage |
+------+------------+---------+
|    1 | 2015-06-15 |    1234 |
|    1 | 2015-07-15 |    1444 |
|    1 | 2015-07-25 |    2000 |
|    2 | 2015-06-01 |     100 |
|    2 | 2015-06-20 |     200 |
|    2 | 2015-07-20 |     300 |
+------+------------+---------+

इसका परिणाम

. होता है
+------+------------------------------------+
| id   | `currentmileage`-`previousmileage` |
+------+------------------------------------+
|    1 |                                766 |
|    2 |                                100 |
+------+------------------------------------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tinymce के साथ UTF-8 समस्याएँ?

  2. MySQL - जॉइन ए या बी

  3. मुख्य क्वेरी डेटा चर के साथ MySQL सबक्वेरी

  4. लेफ्ट जॉइन सभी पंक्तियों को वापस नहीं कर रहा है

  5. इकाई ढांचा 4 यूनिकोड समस्या बचत