Trim Endpoints Right

An easy SQL interview practice problem on DataDriven. Write the query and run it against a real database, with instant feedback.

Domain
SQL
Difficulty
easy
Seniority
L3
Asked in
Stripe

Problem

Our data quality check flagged trailing whitespace on some endpoint values in api_calls. Return every call's call_id with its endpoint stripped of trailing whitespace only, leaving the rest of each value exactly as logged.

Trailing whitespace. Clean it up.

Tables

api_calls

Columns: call_id INTEGER, endpoint TEXT, method TEXT, status INTEGER, latency REAL, user_id INTEGER, call_time TEXT, err_msg TEXT

api_calls: 10 of 670 rows
call_idendpointmethodstatuslatencyuser_idcall_timeerr_msg
8079/api/v1/ordersPOST2004.21002026-02-02 01:07:00NULL
8158/api/v2/productsPUT2007.91972026-03-03 02:14:00NULL
8237/api/v1/searchDELETE20111.62942026-04-04 03:21:00NULL
8316/api/v1/auth/loginPATCH20415.33912026-05-05 04:28:00NULL
8395/api/v1/auth/logoutget30119NULL2026-06-06 05:35:00NULL
8474/api/v2/analyticspost40022.75852026-07-07 06:42:00Not found
8553/api/v1/paymentsGET40126.46822026-08-08 07:49:00Unauthorized
8632/api/v1/users/POST40330.17792026-09-09 08:56:00Rate limit exceeded
8711/api/v2/products/PUT40433.88762026-01-10 09:03:00Internal server error
8790/api/v1/usersDELETE50037.5NULL2026-02-11 10:10:00Bad gateway

Expected output

First 5 of 670 rows
call_idendpoint
8079/api/v1/orders
8158/api/v2/products
8237/api/v1/search
8316/api/v1/auth/login
8395/api/v1/auth/logout

Worked solution and explanation

What this really is

This is a one-sided cleanup dressed up as a data quality ticket. The skill being probed is whether you change exactly what the check flagged and nothing else. Anyone can reach for a trim function. The trap is reaching for TRIM, which strips both ends. On this seed, call 9738 is logged as ' /api/v2/products' with a leading space, so a two-sided trim rewrites a value the ticket never mentioned, and that row stops matching.

Step 1: Read the scope off the symptom

The check flagged trailing whitespace, and call 8869 shows it: '/api/v1/orders ' ends in a space. The fix covers the right side only, so the function has to be direction-specific: RTRIM(endpoint).

Step 2: Keep every call

Nothing is filtered out. A clean endpoint passes through RTRIM unchanged, so all 670 calls come back next to their call_id, the key a downstream fix would join on.

Step 3: Alias the result back to endpoint

Naming the cleaned value endpoint makes the output read as a corrected copy of the same column. There is no ORDER BY: the ticket asks for corrected values, not a sorted report.

`RTRIM` for trailing whitespace cleanup
SELECT call_id, RTRIM(endpoint) AS endpoint
FROM api_calls
Two-sided trim
TRIM(endpoint) fixes call 8869 but also turns ' /api/v2/products' on call 9738 into '/api/v2/products'. One row is off, and the fix has edited data outside its scope.
Right-side trim
RTRIM(endpoint) fixes call 8869 and leaves call 9738 exactly as logged, which is all the check asked for.

Common follow-up questions