按照分行统计每家机构的前10大贷款客户及贷款笔数怎么写Sql
时间: 2024-09-12 17:08:35 浏览: 45
在SQL中,要按照银行分(通常我们假设这是通过`bank_id`字段标识的)统计每个机构的前10大贷款客户及其贷款笔数,你可以使用窗口函数和子查询。这里是一个基本的示例,假设有一个名为`loans`的表,其中包含`loan_id`, `client_id`, `bank_id`, 和 `loan_amount`字段:
```sql
WITH loan_stats AS (
SELECT
bank_id,
client_id,
SUM(loan_amount) as total_loan_amount,
ROW_NUMBER() OVER(PARTITION BY bank_id ORDER BY SUM(loan_amount) DESC) as rank
FROM loans
GROUP BY bank_id, client_id
)
SELECT
bank_id,
client_id,
total_loan_amount,
rank
FROM loan_stats
WHERE rank <= 10;
```
这个查询首先计算了每个银行每个客户的总贷款额,并按金额降序排列(`ROW_NUMBER()`)。然后,外部查询只选择每个银行排名前10的大客户。
相关问题
按照分行统计每家机构的前10大贷款客户怎么写Sql
在SQL中,你可以使用`GROUP BY`、`ORDER BY`和`LIMIT`来按银行分组并获取每个银行的前十大贷款客户。假设你有一个名为`loans`的表,其中包含`bank_name`, `client_id`, 和 `loan_amount`字段,可以参考以下查询:
```sql
SELECT bank_name, client_id, SUM(loan_amount) as total_loan
FROM loans
GROUP BY bank_name, client_id
ORDER BY bank_name, total_loan DESC
LIMIT 10;
```
这个查询做了以下几件事:
1. `GROUP BY bank_name, client_id`: 按照银行名和客户ID对数据进行分组,使得每个组合都有各自的贷款总额总和。
2. `SUM(loan_amount) as total_loan`: 计算每个客户的贷款总额。
3. `ORDER BY bank_name, total_loan DESC`: 按银行名升序和贷款总额降序排序,以便找到每个银行最大的贷款额。
4. `LIMIT 10`: 取出每个银行排序后的前10行。
请注意,这个查询假设`client_id`唯一地标识了每个客户,并且贷款金额越大代表贷款越多。如果需要更具体的排名信息,可能需要进一步调整或使用窗口函数。
按照分行统计每家机构的前10大贷款客户怎么写sql。
在SQL中,你可以使用GROUP BY和LIMIT关键字来按银行分组,并获取每个银行的最大或前10大贷款客户。这里假设我们有一个名为`loans`的表,其中包含`bank_id`, `client_id`和`loan_amount`字段。下面是一个基本的示例:
```sql
SELECT bank_id, client_id, SUM(loan_amount) as total_loan
FROM loans
GROUP BY bank_id, client_id
ORDER BY bank_id, total_loan DESC
LIMIT 10;
```
这个查询做了以下几件事:
1. **GROUP BY**:按照`bank_id`和`client_id`对数据进行分组,这意味着每个银行的所有贷款记录将被打包在一起。
2. **SUM(loan_amount)**:计算每个客户的总贷款金额。
3. **ORDER BY**:首先按银行ID排序,然后在每个银行内部按贷款总额降序排列,以便找到最大的10笔贷款。
4. **LIMIT 10**:只返回每个银行的前10大贷款客户。
如果你只想显示每个银行的前10大贷款客户而不考虑贷款金额,可以去掉`SUM(loan_amount)`并修改`ORDER BY`部分:
```sql
SELECT bank_id, client_id
FROM (
SELECT bank_id, client_id, ROW_NUMBER() OVER (PARTITION BY bank_id ORDER BY loan_amount DESC) as rank
FROM loans
) ranked_loans
WHERE rank <= 10
GROUP BY bank_id, client_id;
```
这里使用窗口函数`ROW_NUMBER()`来给每个银行内的客户排名。
阅读全文