Leetcode力扣 MySQL数据库 1831 每天的最大交易

1831 每天的最大交易

SQL架构

Create table If Not Exists Transactions_1831 (transaction_id int, day datetime, amount int);
Truncate table Transactions_1831;
insert into Transactions_1831 (transaction_id, day, amount) values ('8', '2021-4-3 15:57:28', '57');
insert into Transactions_1831 (transaction_id, day, amount) values ('9', '2021-4-28 08:47:25', '21');
insert into Transactions_1831 (transaction_id, day, amount) values ('1', '2021-4-29 13:28:30', '58');
insert into Transactions_1831 (transaction_id, day, amount) values ('5', '2021-4-28 16:39:59', '40');
insert into Transactions_1831 (transaction_id, day, amount) values ('6', '2021-4-29 23:39:28', '58');


表: Transactions

+----------------+----------+
| Column Name    | Type     |
+----------------+----------+
| transaction_id | int      |
| day            | datetime |
| amount         | int      |
+----------------+----------+
transaction_id 是此表的主键。
每行包括了该次交易的信息。
 

写一条 SQL 返回每天交易金额 amount 最大的交易 ID 。如果某天有多个这样的交易,返回这些交易的 ID 。

返回结果根据 transaction_id 升序排列。

查询结果样例如下:
 

Transactions table:
+----------------+--------------------+--------+
| transaction_id | day                | amount |
+----------------+--------------------+--------+
| 8              | 2021-4-3 15:57:28  | 57     |
| 9              | 2021-4-28 08:47:25 | 21     |
| 1              | 2021-4-29 13:28:30 | 58     |
| 5              | 2021-4-28 16:39:59 | 40     |
| 6              | 2021-4-29 23:39:28 | 58     |
+----------------+--------------------+--------+

Result table:
+----------------+
| transaction_id |
+----------------+
| 1              |
| 5              |
| 6              |
| 8              |
+----------------+
"2021-4-3"  --> 有一个 id 是 8 的交易,因此,把它加入结果表。 
"2021-4-28" --> 有两个交易,id 是 5 和 9 ,交易 5 的金额是 40 ,而交易 9 的数量是 21 。只需要将交易 5 加入结果表,因为它是当天金额最大的交易。
"2021-4-29" --> 有两个交易,id 是 1 和 6 ,这两个交易的金额都是 58 ,因此需要把它们都写入结果表。
最后,把交易 id 按照升序排列。

解题

SELECT
    transaction_id 
FROM
    transactions_1831 
WHERE
    ( date( DAY ), amount ) IN ( SELECT date( DAY ), max( amount ) FROM transactions_1831 GROUP BY date( DAY ) ) 
ORDER BY 1;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ziko-1101

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值