#mysql #group-by #greatest-n-per-group #typeorm
#mysql #группировать по #наибольшее число пользователей на группу #typeorm
Вопрос:
Это мои записи в таблице:
id bal total trans_date
1 200 220 2020-11-11
2 220 250 2020-11-11
3 250 226 2020-11-11
4 226 280 2020-11-10
Теперь я упорядочиваю и группирую данные по дате транзакции
Если я хочу извлечь newest value of total
, как я могу это сделать?
Пример. Я хочу получить total: 226
для date 2020-11-11
(Когда даты транзакций совпадают, я использую ID для идентификации старых и новых значений)
await connection.manager.createQueryBuilder(RefTransaction, 'rt')
.addSelect('rt.bal', 'balance')
.addSelect('rt.total', 'total')
.orderBy("rt.transDate")
.groupBy('rt.transDate')
.getRawMany()
Текущий результат :
bal total trans_date
200 220 2020-11-11
226 280 2020-11-10
Ожидаемый результат :
bal total trans_date
200 226 2020-11-11
226 280 2020-11-10
Как я должен изменить свой запрос для достижения значений?
Заранее спасибо.
Комментарии:
1. не уверен, что я следую вашему ожидаемому результату?
200 - 226 - 2020-11-11
? почему 200 и почему 226 ? не так ли250 250
?2. Мне не нужны МАКСИМАЛЬНЫЕ значения @Rippo, мне нужно значение из последней записи
3. Все еще неясно, @Keval почему bal 200? 200 — это либо идентификатор первой строки = 1, либо наименьшее значение? Вы сделали 226 понятным, поскольку это последняя запись Id = 3