Получить разницу между двумя записями

У меня есть таблица User-Information, где каждые 24 часа для каждого пользователя добавляется новая запись. Эта запись содержит user_id, значение (счетчик) и дату создания.

TBL_EXAMPLE
ID | user_id | cnt_val | record_date
--------------------------------------------
1  | 10      | 46      | 2019-02-05 12:14:35
2  | 21      | 12      | 2019-02-05 12:14:35
3  | 32      | 453     | 2019-02-05 12:14:35
4  | 10      | 23      | 2019-02-06 16:11:21
5  | 21      | 34      | 2019-02-06 16:11:21
6  | 32      | 480     | 2019-02-06 16:11:21
7  | 10      | 31      | 2019-02-07 11:34:25
8  | 21      | 44      | 2019-02-07 11:34:25
9  | 32      | 489     | 2019-02-07 11:34:25
...

Ожидаемый результат:

User 10 Counter: 46 .. 31 --> Difference: 15
User 21 Counter: 12 .. 44 --> Difference: 32
User 32 Counter: 453.. 489 --> Difference: 36

Я хочу динамически составить список всех различий для каждого конкретного пользователя от самой старой до самой новой записи данных в таблице.

обновите свой вопрос, добавьте схему таблицы, правильный образец данных и ожидаемый результат

ScaisEdge 07.02.2019 16:02

Обновил пост!

Fabian Ortner 07.02.2019 17:55

откуда берутся вторые числа -- кажется, N + 6?

treyBake 07.02.2019 17:57

о, я вижу, что user_id равен 1 столбцу, несмотря на наличие поля идентификатора o.O - в любом случае. .. как он узнает, какое значение взять, если имеется более 2 строк с одним и тем же user_id?

treyBake 07.02.2019 17:58

ID — это идентификатор записи, а не «таблица пользователей», а просто «таблица информации о пользователе» для счетчика. Он должен использовать самую старую и самую новую запись каждого пользователя и вычислять разницу между этими двумя записями!

Fabian Ortner 07.02.2019 18:00
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
5
43
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

вы можете дважды использовать внутреннее соединение для table_exeple и подзапрос для минимальной и максимальной даты

select distinct t1.user_id,  t1.cnt_va - t2.cnt_val 
from  (
  select user_id , min(date) min_date,  max(date) max_date
  from TTBL_EXAMPLE 
  group by user_id  
) tmm 
inner join TTBL_EXAMPLE t2  ON  t2.date = tmm.max_date
    and t2.user_id = tmm.user_id
inner join  TBL_EXAMPLE t1  ON t1.date = tmm.min_date
    and t1.user_id = tmm.user_id

Я добавил предложение FROM и отличное, теперь все работает идеально! Могу ли я попросить вас о том же запросе, ожидающем, что каждый пользователь получит сумму всех пользователей за каждый день?

Fabian Ortner 07.02.2019 18:50

Другие вопросы по теме