create table lifts
(
      id         	  int
    , capacity_kg     int
);

insert into lifts values (1, 300);
insert into lifts values (2, 350);

create table lift_passengers
(
      passenger_name    varchar(50)
    , weight_kg     	int
	, lift_id			int
);

insert into lift_passengers values ('Rahul', 85, 1);
insert into lift_passengers values ('Adarsh', 73, 1);
insert into lift_passengers values ('Riti', 95, 1);
insert into lift_passengers values ('Dheeraj', 80, 1);
insert into lift_passengers values ('Vimal', 83, 2);
insert into lift_passengers values ('Neha', 77, 2);
insert into lift_passengers values ('Priti', 73, 2);
insert into lift_passengers values ('Himanshi', 85, 2);

WITH lift_cap AS (
    SELECT 
        lp.*,
        SUM(weight_kg) OVER (PARTITION BY lp.lift_id ORDER BY weight_kg ASC) AS cum_wg,
        l.capacity_kg
    FROM lifts l
    JOIN lift_passengers lp ON l.id = lp.lift_id
),
filtered_lift_cap AS (
    SELECT * 
    FROM lift_cap
    WHERE cum_wg <= capacity_kg
)
SELECT  
    lift_id, 
    STRING_AGG(passenger_name, ',' ORDER BY weight_kg) AS passengers
FROM filtered_lift_cap
GROUP BY lift_id;

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: