Skip to main content
Back to problems
#1571
Easy Database

Warehouse manager

Database
87.2% acceptance
Mar 31, 2026
165
12

No description available.

Solution

Pandas
Time O(1)
Space O(1)
LeetCode
solution.pandas
# Table: Warehouse
# 
# +--------------+---------+
# | Column Name  | Type    |
# +--------------+---------+
# | name         | varchar |
# | product_id   | int     |
# | units        | int     |
# +--------------+---------+
# (name, product_id) is the primary key (combination of columns with unique values) for this table.
# Each row of this table contains the information of the products in each warehouse.
# 
#  
# 
# Table: Products
# 
# +---------------+---------+
# | Column Name   | Type    |
# +---------------+---------+
# | product_id    | int     |
# | product_name  | varchar |
# | Width         | int     |
# | Length        | int     |
# | Height        | int     |
# +---------------+---------+
# product_id is the primary key (column with unique values) for this table.
# Each row of this table contains information about the product dimensions (Width, Lenght, and Height) in feets of each product.
# 
#  
# 
# Write a solution to report the number of cubic feet of volume the inventory occupies in each warehouse.
# 
# Return the result table in any order.
# 
# The query result format is in the following example.
#
# Example 1:
# Input:
# Warehouse table:
# +------------+--------------+-------------+
# | name       | product_id   | units       |
# +------------+--------------+-------------+
# | LCHouse1   | 1            | 1           |
# | LCHouse1   | 2            | 10          |
# | LCHouse1   | 3            | 5           |
# | LCHouse2   | 1            | 2           |
# | LCHouse2   | 2            | 2           |
# | LCHouse3   | 4            | 1           |
# +------------+--------------+-------------+
# Products table:
# +------------+--------------+------------+----------+-----------+
# | product_id | product_name | Width      | Length   | Height    |
# +------------+--------------+------------+----------+-----------+
# | 1          | LC-TV        | 5          | 50       | 40        |
# | 2          | LC-KeyChain  | 5          | 5        | 5         |
# | 3          | LC-Phone     | 2          | 10       | 10        |
# | 4          | LC-T-Shirt   | 4          | 10       | 20        |
# +------------+--------------+------------+----------+-----------+
# Output:
# +----------------+------------+
# | warehouse_name | volume     |
# +----------------+------------+
# | LCHouse1       | 12250      |
# | LCHouse2       | 20250      |
# | LCHouse3       | 800        |
# +----------------+------------+
# Explanation:
# Volume of product_id = 1 (LC-TV), 5x50x40 = 10000
# Volume of product_id = 2 (LC-KeyChain), 5x5x5 = 125
# Volume of product_id = 3 (LC-Phone), 2x10x10 = 200
# Volume of product_id = 4 (LC-T-Shirt), 4x10x20 = 800
# LCHouse1: 1 unit of LC-TV + 10 units of LC-KeyChain + 5 units of LC-Phone.
# Total volume: 1*10000 + 10*125  + 5*200 = 12250 cubic feet
# LCHouse2: 2 units of LC-TV + 2 units of LC-KeyChain.
# Total volume: 2*10000 + 2*125 = 20250 cubic feet
# LCHouse3: 1 unit of LC-T-Shirt.
# Total volume: 1*800 = 800 cubic feet.

import pandas as pd

def warehouse_manager(warehouse: pd.DataFrame, products: pd.DataFrame) -> pd.DataFrame:
  products['volume'] = products['Width'] * products['Length'] * products['Height']
  merged = warehouse.merge(products[['product_id', 'volume']], on='product_id')
  merged['total_volume'] = merged['units'] * merged['volume']
  result = merged.groupby('name')['total_volume'].sum().reset_index()
  result.columns = ['warehouse_name', 'volume']
  return result