Skip to main content
Back to problems
#2990
Easy Database

Loan types

Database
63.9% acceptance
Mar 31, 2026
19
8

No description available.

Solution

Pandas
Time O(1)
Space O(1)
LeetCode
solution.pandas
# Table: Loans
# 
# +-------------+---------+
# | Column Name | Type    |
# +-------------+---------+
# | loan_id     | int     |
# | user_id     | int     |
# | loan_type   | varchar |
# +-------------+---------+
# loan_id is column of unique values for this table.
# This table contains loan_id, user_id, and loan_type.
# 
# Write a solution to find all distinct user_id's that have at least one Refinance loan type and at least one Mortgage loan type.
# 
# Return the result table ordered by user_id in ascending order.
# 
# The result format is in the following example.
#
# Example 1:
# Input:
# Loans table:
# +---------+---------+-----------+
# | loan_id | user_id | loan_type |
# +---------+---------+-----------+
# | 683     | 101     | Mortgage  |
# | 218     | 101     | AutoLoan  |
# | 802     | 101     | Inschool  |
# | 593     | 102     | Mortgage  |
# | 138     | 102     | Refinance |
# | 294     | 102     | Inschool  |
# | 308     | 103     | Refinance |
# | 389     | 104     | Mortgage  |
# +---------+---------+-----------+
# Output
# +---------+
# | user_id |
# +---------+
# | 102     |
# +---------+
# Explanation
# - User_id 101 has three loan types, one of which is a Mortgage. However, this user does not have any loan type categorized as Refinance, so user_id 101 won't be considered.
# - User_id 102 possesses three loan types: one for Mortgage and one for Refinance. Hence, user_id 102 will be included in the result.
# - User_id 103 has a loan type of Refinance but lacks a Mortgage loan type, so user_id 103 won't be considered.
# - User_id 104 has a Mortgage loan type but doesn't have a Refinance loan type, thus, user_id 104 won't be considered.
# Output table is ordered by user_id in ascending order.

import pandas as pd

def loan_types(loans: pd.DataFrame) -> pd.DataFrame:
  has_mortgage = set(loans[loans['loan_type'] == 'Mortgage']['user_id'])
  has_refinance = set(loans[loans['loan_type'] == 'Refinance']['user_id'])
  both = sorted(has_mortgage & has_refinance)
  return pd.DataFrame({'user_id': both})