Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tính số dặm của phương tiện bằng cách trừ đi số đọc phương tiện

Tuyên bố từ chối trách nhiệm về chất béo lớn: Điều này đi kèm với không bảo hành, nhưng nếu Tôi đã hiểu vấn đề của bạn Tôi không sai ở đâu đó, hãy xem xét những điều sau.

Bảng của bạn đang

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

Một cách khả thi là trước tiên tạo chế độ xem với ngày đọc gần đây nhất của tháng trước (bạn có thể chuyển thành một chế độ xem SELECT lồng nhau khác nếu bạn có khuynh hướng như vậy):

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

Tiếp theo là

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`

Đối với

+------+------------+---------+
| 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 |
+------+------------+---------+

điều này dẫn đến

+------+------------------------------------+
| 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. Cách lấy tất cả các hàng có chứa các ký tự khác ngoài [a-zA-Z] trong MySQL

  2. MySQL Delete với Group By

  3. Làm thế nào để có được danh sách những người bạn chung

  4. Lọc các hàng riêng biệt trong SQL

  5. Không có kết quả sau khi xóa mysql ft_stopword_file