I need some help with producing a MySQL query for MySQL version 5.7.29
The data set I have looks like this (sample data):
| id | serial_number | reading_value | reading_date | register_type |
|----|---------------|---------------|---------------------|---------------|
| 1 | 123 | 7492.91 | 2019-11-20 15:37:55 | import |
| 2 | 123 | 7783.3 | 2019-11-25 11:15:47 | import |
| 3 | 123 | 0 | 2019-11-26 13:34:01 | export |
| 4 | 123 | 4.01 | 2019-11-27 13:52:23 | export |
| 5 | 456 | 7404.93 | 2019-11-24 13:31:06 | import |
| 6 | 456 | 7758.23 | 2019-11-26 13:35:02 | import |
| 7 | 456 | 0 | 2019-11-20 15:37:55 | export |
| 8 | 456 | 0 | 2019-11-26 13:34:01 | export |
I would like to get the sum of the reading_value of the latest import and latest export for each serial_number to produce a data set like this:
| serial_number | total_value | latest_reading_date |
|---------------|-------------|---------------------|
| 123 | 7787.31 | 2019-11-27 13:52:23 | <--- id 2 and 4 from above table
| 456 | 7758.23 | 2019-11-26 13:35:02 | <--- id 6 and 8 from above table
- In this resulting data set, the total_value is the sum of the latest import and latest export reading_value of each serial_number
- the latest_reading_date is the latest (newest) import or export (whichever is latest) date for the serial_number
I have tried the following query, but it gives me the sum of all the import and export values per serial_number instead of just the sum of the latest import and latest export value of each serial_number.
select serial_number, sum(reading_value) as 'total_value', max(reading_date) as 'latest_reading_date'
from t1
group by serial_number
Any assistance will be greatly appreciated.