Skip to main content
Back to problems
#1421
Easy Database

Npv queries

Database
82.9% acceptance
Mar 31, 2026
61
297

No description available.

Solution

Pandas
Time O(1)
Space O(1)
LeetCode
solution.pandas
# Table: NPV
# 
# +---------------+---------+
# | Column Name   | Type    |
# +---------------+---------+
# | id            | int     |
# | year          | int     |
# | npv           | int     |
# +---------------+---------+
# (id, year) is the primary key (combination of columns with unique values) of this table.
# The table has information about the id and the year of each inventory and the corresponding net present value.
# 
#  
# 
# Table: Queries
# 
# +---------------+---------+
# | Column Name   | Type    |
# +---------------+---------+
# | id            | int     |
# | year          | int     |
# +---------------+---------+
# (id, year) is the primary key (combination of columns with unique values) of this table.
# The table has information about the id and the year of each inventory query.
# 
#  
# 
# Write a solution to find the npv of each query of the Queries table.
# 
# Return the result table in any order.
# 
# The result format is in the following example.
#
# Example 1:
# Input:
# NPV table:
# +------+--------+--------+
# | id   | year   | npv    |
# +------+--------+--------+
# | 1    | 2018   | 100    |
# | 7    | 2020   | 30     |
# | 13   | 2019   | 40     |
# | 1    | 2019   | 113    |
# | 2    | 2008   | 121    |
# | 3    | 2009   | 12     |
# | 11   | 2020   | 99     |
# | 7    | 2019   | 0      |
# +------+--------+--------+
# Queries table:
# +------+--------+
# | id   | year   |
# +------+--------+
# | 1    | 2019   |
# | 2    | 2008   |
# | 3    | 2009   |
# | 7    | 2018   |
# | 7    | 2019   |
# | 7    | 2020   |
# | 13   | 2019   |
# +------+--------+
# Output:
# +------+--------+--------+
# | id   | year   | npv    |
# +------+--------+--------+
# | 1    | 2019   | 113    |
# | 2    | 2008   | 121    |
# | 3    | 2009   | 12     |
# | 7    | 2018   | 0      |
# | 7    | 2019   | 0      |
# | 7    | 2020   | 30     |
# | 13   | 2019   | 40     |
# +------+--------+--------+
# Explanation:
# The npv value of (7, 2018) is not present in the NPV table, we consider it 0.
# The npv values of all other queries can be found in the NPV table.

import pandas as pd

def npv_queries(npv: pd.DataFrame, queries: pd.DataFrame) -> pd.DataFrame:
  result = queries.merge(npv, on=['id', 'year'], how='left')
  result['npv'] = result['npv'].fillna(0).astype(int)
  return result