首页 > 数据库 >leetcode 1555 银行账号概要(postgresql)

leetcode 1555 银行账号概要(postgresql)

时间:2024-07-25 15:25:34浏览次数:17  
标签:1555 08 leetcode ----------- credit 2020 user postgresql id

需求

用户表: Users

±-------------±--------+
| Column Name | Type |
±-------------±--------+
| user_id | int |
| user_name | varchar |
| credit | int |
±-------------±--------+
user_id 是这个表的主键。
表中的每一列包含每一个用户当前的额度信息。

交易表:Transactions

±--------------±--------+
| Column Name | Type |
±--------------±--------+
| trans_id | int |
| paid_by | int |
| paid_to | int |
| amount | int |
| transacted_on | date |
±--------------±--------+
trans_id 是这个表的主键。
表中的每一列包含银行的交易信息。
ID 为 paid_by 的用户给 ID 为 paid_to 的用户转账。

力扣银行 (LCB) 帮助程序员们完成虚拟支付。我们的银行在表 Transaction 中记录每条交易信息,我们要查询每个用户的当前余额,并检查他们是否已透支(当前额度小于 0)。

写一条 SQL 语句,查询:

user_id 用户 ID
user_name 用户名
credit 完成交易后的余额
credit_limit_breached 检查是否透支 (“Yes” 或 “No”)
以任意顺序返回结果表。

查询格式见如下所示。

示例 1:

输入:
Users 表:
±-----------±-------------±------------+
| user_id | user_name | credit |
±-----------±-------------±------------+
| 1 | Moustafa | 100 |
| 2 | Jonathan | 200 |
| 3 | Winston | 10000 |
| 4 | Luis | 800 |
±-----------±-------------±------------+

Transactions 表:
±-----------±-----------±-----------±---------±--------------+
| trans_id | paid_by | paid_to | amount | transacted_on |
±-----------±-----------±-----------±---------±--------------+
| 1 | 1 | 3 | 400 | 2020-08-01 |
| 2 | 3 | 2 | 500 | 2020-08-02 |
| 3 | 2 | 1 | 200 | 2020-08-03 |
±-----------±-----------±-----------±---------±--------------+

输出:
±-----------±-----------±-----------±----------------------+
| user_id | user_name | credit | credit_limit_breached |
±-----------±-----------±-----------±----------------------+
| 1 | Moustafa | -100 | Yes |
| 2 | Jonathan | 500 | No |
| 3 | Winston | 9900 | No |
| 4 | Luis | 800 | No |
±-----------±-----------±-----------±----------------------+
Moustafa 在 “2020-08-01” 支付了 $400 并在 “2020-08-03” 收到了 $200 ,当前额度 (100 -400 +200) = -$100
Jonathan 在 “2020-08-02” 收到了 $500 并在 “2020-08-08” 支付了 $200 ,当前额度 (200 +500 -200) = $500
Winston 在 “2020-08-01” 收到了 $400 并在 “2020-08-03” 支付了 $500 ,当前额度 (10000 +400 -500) = $9900
Luis 未收到任何转账信息,额度 = $800

输入

在这里插入图片描述

输出

with t1 as (
select user_id,user_name,coalesce(credit-t.amount,credit) as credit1
from users u left join transactions t
on user_id=paid_by
),t2 as (
select user_id,user_name,coalesce(credit1+t2.amount,credit1) as credit2
from t1
left join transactions t2
on t1.user_id=t2.paid_to
)
select user_id,user_name,credit2 as credit,
       case when credit2>=0 then 'No' else 'Yes' end as credit_limit_breached
from t2

在这里插入图片描述

标签:1555,08,leetcode,-----------,credit,2020,user,postgresql,id
From: https://blog.csdn.net/weixin_51696882/article/details/140691346

相关文章

  • leetcode 1549 每件商品的最新订单(postgresql)
    需求表:Customers±--------------±--------+|ColumnName|Type|±--------------±--------+|customer_id|int||name|varchar|±--------------±--------+customer_id是该表主键.该表包含消费者的信息.表:Orders±--------------±--------+|......
  • PostgreSQL学习笔记----GUC机制
    GUC介绍在守护进程Postmaster初始化内存环境之后,需要配置Postmaster运行时所需的各种参数。GUC(GrandUnifedConfiguralion)模块实现了多种数据类型(目前有boolean、int、real、string、enum五种)的变量配置。这些参数可能会由不同的进程在不同的时机进行配置,系统会根据......
  • gitlab12-postgresql-主备
    gitlab-postgresql-12.3一、简介1、gitlab仅支持postgresql数据库管理系统,因此,数据库服务器有两个选项可用于linux软件包安装:使用Linux软件包安装附带的打包PostgreSQL服务器(不需要配置,推荐)使用外部postgresql服务器,(需要配置,并且需要手动为数据库设定种子)2、本章节......
  • LeetCode 864. Shortest Path to Get All Keys
    原题链接在这里:https://leetcode.com/problems/shortest-path-to-get-all-keys/description/题目:Youaregivenan mxn grid grid where:'.' isanemptycell.'#' isawall.'@' isthestartingpoint.Lowercaselettersrepresentkeys.U......
  • 代码随想录算法训练营第 23 天 |LeetCode 39. 组合总和 LeetCode 40.组合总和II LeetC
    代码随想录算法训练营Day23代码随想录算法训练营第23天|LeetCode39.组合总和LeetCode40.组合总和IILeetCode131.分割回文串目录代码随想录算法训练营前言LeetCode39.组合总和LeetCode40.组合总和IILeetCode131.分割回文串一、基础1、回溯可以看成N叉树2、去......
  • 代码随想录算法训练营第 22 天 |LeetCode77. 组合 LeetCode 216.组合总和III LeetCode
    代码随想录算法训练营Day22代码随想录算法训练营第22天|LeetCode77.组合LeetCode216.组合总和IIILeetCode17.电话号码的字母组合目录代码随想录算法训练营前言LeetCode77.组合LeetCode216.组合总和IIILeetCode17.电话号码的字母组合一、基础1、回溯可以解......
  • 将非常大的数据插入 PostgreSQL 表的更好方法
    将非常大的数据插入PostgreSQL表的更好方法是什么?操作系统:Ubuntu22.04LTS数据库:PostgreSQL14框架:Python3.11Django现在我使用insertinto语句一次100,000行。平均插入1,000,000行整个过程需要2分钟,在我可以接受的范围内。但我想知道是否有更好的方法......
  • LeetCode122. 买卖股票的最佳时机 II
    题目链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/description/题目叙述:给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候最多只能持有一股股票。你也可以先购买,然后......
  • LeetCode 热题 HOT 100 (007/100)【宇宙最简单版】
    【数组】No.0215数组中第k个最大的元素【中等】......
  • LeetCode860. 柠檬水找零
    题目链接:https://leetcode.cn/problems/lemonade-change/description/题目叙述:在柠檬水摊上,每一杯柠檬水的售价为5美元。顾客排队购买你的产品,(按账单bills支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付5美元、10美元或20美元。你必须给每个顾客正确找零,......