~/practice
Problem set
Real interview questions in SQL, Python and pandas — runnable right in your browser.
problems329
solved here0
progress0%
SQL starter set0 / 6 solved
PYTHON starter set0 / 6 solved
PANDAS starter set0 / 6 solved
Guest solve history stays on this device and doesn’t sync. Sign in to save future work to your account.
difficulty
progress
329 problems
legendsqlpythonpandaseasymediumhard
- sqlFilter customers by countryWHEREORDER BYeasy
- sqlCount orders per statusGROUP BYCOUNTeasy
- sqlMost expensive product per categoryGROUP BYMAXmedium
- sqlJoin orders to customersJOINeasy
- sqlRevenue per orderJOINSUMmedium
- sqlTop spending customersJOINHAVINGmedium
- sqlCustomers with no ordersLEFT JOINNULLmedium
- sqlRank salaries within departmentWindow functionshard
- sqlMonthly completed revenueDatesGROUP BYhard
- sqlSecond highest salary per departmentCTEWindow functionshard
- sqlSign-ups per acquisition channelGROUP BYCOUNTeasy
- sqlActive subscribersJOINWHEREeasy
- sqlPaid revenue by monthDatesSUMeasy
- sqlInvoice status breakdownGROUP BYCOUNTeasy
- sqlUsers who never used a featureLEFT JOINNULLeasy
- sqlCurrent MRR by planJOINGROUP BYmedium
- sqlLifetime value per userLEFT JOINCOALESCEmedium
- sqlConversion rate by channelLEFT JOINConditional aggregationmedium
- sqlChurned customers and their planJOINDatesmedium
- sqlPayment failure rate by planConditional aggregationJOINmedium
- sqlMost popular feature per monthGROUP BYDatesmedium
- sqlTime to first feature useMINDatesmedium
- sqlFeature breadth power usersHAVINGCOUNT DISTINCTmedium
- sqlRevenue by countryJOINShare of totalmedium
- sqlUpgrade pathsSelf joinmedium
- sqlMonthly sign-up cohort sizeDatesLEFT JOINmedium
- sqlRefunds and failures per userConditional aggregationmedium
- sqlAverage revenue per paying userSubqueryAVGmedium
- sqlUsers who signed up but never paidNOT EXISTSAnti joinmedium
- sqlCumulative revenueWindow functionsRunning totalhard
- sqlMonth-over-month revenue growthLAGWindow functionshard
- sqlTop spender per countryROW_NUMBERCTEhard
- sqlActive subscribers at each month endRecursive CTEDateshard
- sqlGap between consecutive paymentsLAGDateshard
- sqlNet revenue retention by cohortCTECohortshard
- sqlNumber each account's transactionsROW_NUMBEReasy
- sqlRank merchants by spendRANKGROUP BYeasy
- sqlDebit vs overall averageAVG OVEReasy
- sqlTransaction count beside each rowCOUNT OVEReasy
- sqlFirst transaction date per accountFIRST_VALUEeasy
- sqlRunning balanceRunning totalCASEmedium
- sqlDays since previous transactionLAGDatesmedium
- sqlNext merchant visitedLEADJOINmedium
- sqlDense rank of debit sizesDENSE_RANKmedium
- sqlTwo largest debits per accountROW_NUMBERTop-N per groupmedium
- sql3-transaction moving averageFramesAVG OVERmedium
- sqlCategory share of each account's spendSUM OVERShare of totalmedium
- sqlSpend quartilesNTILEmedium
- sqlFirst and last merchantFIRST_VALUELAST_VALUEmedium
- sqlDistance from account averageAVG OVERmedium
- sqlMerchant Pareto curveRunning totalShare of totalmedium
- sqlMonth-over-month spend per accountLAGDatesmedium
- sqlPercentile rank of debit amountsPERCENT_RANKmedium
- sqlTop merchant each monthRANKCTEmedium
- sqlAccount rank by countryRANKLEFT JOINmedium
- sql7-day rolling spendRANGE framesDateshard
- sqlLongest daily spending streakGaps and islandshard
- sqlFirst overdraftRunning totalROW_NUMBERhard
- sqlSpending burstsSessionizationLAGhard
- sqlUnusually large debitsFramesAnomaly detectionhard
- sqlProducts per categoryGROUP BYAVGeasy
- sqlOrders per customer, including zeroLEFT JOINCOUNTeasy
- sqlSupplier catalogue sizeLEFT JOINeasy
- sqlShipments per carrierGROUP BYCOUNTeasy
- sqlProducts never orderedAnti joinNOT EXISTSeasy
- sqlRevenue per supplierMulti-table JOINSUMmedium
- sqlOn-time rate per carrierConditional aggregationmedium
- sqlAverage transit timeDatesAVGmedium
- sqlBought Electronics and HomeHAVINGCOUNT DISTINCTmedium
- sqlOrders missing a shipmentLEFT JOINNULLmedium
- sqlCategory revenue pivotPivotConditional aggregationmedium
- sqlFrequently bought togetherSelf joinmedium
- sqlAlways on timeNOT EXISTSRelational divisionmedium
- sqlAverage order value by citySubqueryAVGmedium
- sqlLate deliveriesJOINDatesmedium
- sqlJanuary buyers who skipped FebruaryEXCEPTSet operationsmedium
- sqlMulti-category suppliersHAVINGGROUP_CONCATmedium
- sqlBig basketsHAVINGJOINmedium
- sqlCarrier share of shipmentsScalar subqueryShare of totalmedium
- sqlCustomer spend vs city averageCorrelated subquerymedium
- sqlRepeat purchase rateCTERatioshard
- sqlBest-selling product per categoryTop-N per groupJOINhard
- sqlNeighbours who share a productSelf joinEXISTShard
- sqlZero-filled carrier calendarCROSS JOINLEFT JOINhard
- sqlMedian order valueMedianWindow functionshard
- sqlAbove-average earners with a CTECTEeasy
- sqlDirect reports per managerCTEJOINeasy
- sqlYour first recursive CTERecursive CTEeasy
- sqlGenerate a calendarRecursive CTEDateseasy
- sqlMutual followsSelf joinCTEeasy
- sqlChain of commandRecursive CTEHierarchymedium
- sqlEveryone under the CTORecursive CTEHierarchymedium
- sqlOrg chart pathsRecursive CTEString buildingmedium
- sqlTotal headcount under each managerRecursive CTETransitive closuremedium
- sqlCategory breadcrumbsRecursive CTETreesmedium
- sqlLeaf categories and their depthRecursive CTENOT EXISTSmedium
- sqlDaily active users, zero-filledRecursive CTELEFT JOINmedium
- sqlLogin streaksGaps and islandsCTEmedium
- sqlLongest streak per personGaps and islandsCTE chainmedium
- sqlMissed days between loginsRecursive CTEGapsmedium
- sqlPeople you may knowCTEGraphmedium
- sqlFollowers and followingCTELEFT JOINmedium
- sqlPay gap to managerSelf joinCTEmedium
- sqlFollow trianglesGraphSelf joinmedium
- sqlSessionize eventsSessionizationCTE chainhard
- sqlSession conversionSessionizationConditional aggregationhard
- sqlDegrees of separationRecursive CTEGraph traversalhard
- sqlSalary cost of each teamRecursive CTERollupshard
- sqlOrg levelsRecursive CTEAggregationhard
- sqlRolling 3-day active usersRecursive CTERange joinhard
- pythonSum of even numbersfor looplistseasy
- pythonUnique values, order preservedsetslistseasy
- pythonWord frequency counterdictsstringseasy
- pythonSet operationssetseasy
- pythonFlatten a nested listrecursionlistsmedium
- pythonGroup by key functionfunctionsdictsmedium
- pythonMoving averageloopsslicingmedium
- pythonNormalize a feature listfunctionsmathmedium
- pythonTop-k frequent itemsdictssortinghard
- pythonBatch an iterablegeneratorsloopshard
- pandasSelect and filter rowsfilteringeasy
- pandasCreate a revenue columnassigneasy
- pandasGroup by and aggregategroupbyeasy
- pandasHandle missing ratingsmissing dataeasy
- pandasMulti-column aggregationgroupbyaggmedium
- pandasMerge two DataFramesmergemedium
- pandasPivot tablepivot_tablemedium
- pandasRank within groupsgroupbyrankhard
- pandasReshape wide to longmelthard
- pandasShare of revenue per customertransformgroupbyhard
- sqlairbnbFilter active listings by cityWHEREORDER BYeasy
- sqlairbnbTop-rated listing per cityWindow functionsJOINmedium
- pandasairbnbHost listing summarygroupbyaggmedium
- pythonairbnbMaximum booking overlapintervalssortinghard
- pandasuberFilter SF tripsfilteringeasy
- pandasuberDriver earnings sharegroupbytransformmedium
- sqluberAverage fare by surge bucketCASEGROUP BYmedium
- pythonuberTop drivers by total faredictssortingmedium
- sqlstripeCount charges by statusGROUP BYCOUNTeasy
- sqlstripeRevenue by subscription planJOINGROUP BYmedium
- pythonstripeMRR growth rateloopsmathmedium
- sqlmetaActive users who postedJOINDISTINCTeasy
- sqlmetaTop posts by like countJOINGROUP BYmedium
- pythonmetaFriend suggestions via mutualsdictssetsmedium
- sqlmetaRunning total of new usersWindow functionsDateshard
- sqlamazonProducts above average pricesubqueryeasy
- sqlamazonProducts with verified reviewsJOINGROUP BYmedium
- pythonamazonWeighted product ratingfunctionsmathmedium
- pandasnetflixFilter drama watch eventsfilteringeasy
- pandasnetflixMonthly watch hoursgroupbydatetimesmedium
- pythonnetflixTop genres by watch minutesdictssortinghard
- sqlairbnbRevenue per cityJOINGROUP BYmedium
- sqlairbnbHighest rated listing per cityWindow functionsrankinghard
- pandasairbnbOccupancy revenue per hostgroupbyaggmedium
- pythonairbnbNightly price bucketsdictsconditionalseasy
- sqluberSurge trips by cityCASEGROUP BYmedium
- sqluberDriver fare running totalWindow functionsrunning totalhard
- pandasuberFare per mile by citygroupbyratiosmedium
- pandasuberBase fare without surgeassignrankhard
- sqlstripeCharges by statusGROUP BYCOUNTeasy
- sqlstripePayment failure rate by countryJOINCASEmedium
- sqlstripeNet monthly revenuedatesCASEhard
- pythonstripeRetry schedule with backoffloopsmathmedium
- sqlmetaUsers who never postedLEFT JOINNULLeasy
- sqlmetaEngagement per postLEFT JOINGROUP BYmedium
- sqlmetaReciprocal engagementself joinEXISTShard
- pythonmetaSession windows from timestampsloopslistsmedium
- sqlamazonUnits sold per categoryJOINSUMeasy
- sqlamazonVerified-only ratingsfilteringHAVINGmedium
- sqlamazonMonthly revenue growthWindow functionsLAGhard
- pythonamazonWeighted review scoremathfunctionsmedium
- pandasnetflixMinutes watched per genregroupbymedium
- pandasnetflixMonth-two retentionsetsdatetimehard
- pandasnetflixAverage session length per usergroupbyaggmedium
- pythonnetflixTop-k recommendationssortingdictseasy
- sqlgoogleSearches per deviceGROUP BYORDER BYeasy
- sqlgoogleRevenue per campaignJOINGROUP BYmedium
- sqlgoogleDays to a user's second searchWindow functionsdateshard
- pandasgoogleClick-through rate per querygroupbyratiosmedium
- pythongoogleNormalize and count queriesstringsdictsmedium
- sqllinkedinApplications per job postJOINGROUP BYeasy
- sqllinkedinConnection count per memberLEFT JOINGROUP BYmedium
- sqllinkedinMutual connectionsself joinsetshard
- sqllinkedinOffer rate by seniorityCASEaggregationmedium
- pythonlinkedinDegrees of separationgraphsBFShard
- sqlspotifyPlays per genreJOINGROUP BYeasy
- sqlspotifyCompletion rate per trackratiosJOINmedium
- sqlspotifyEach user's most played artistWindow functionsrankinghard
- pandasspotifyMonthly listening hours per artistdatetimepivot_tablemedium
- pandasspotifySkip rate per usertransformgroupbyhard
- sqldoordashAverage delivery time per cityGROUP BYAVGeasy
- sqldoordashLate delivery rate per storeCASEHAVINGmedium
- sqldoordashDasher earnings shareWindow functionsshare of totalhard
- pandasdoordashPeak dinner hour volumedatetimegroupbymedium
- pandasdoordashTip percentage by cuisinegroupbyaggmedium
- sqlsalesforceOpen pipeline by regionWHEREGROUP BYeasy
- sqlsalesforceWin rate per repCASEratiosmedium
- sqlsalesforceQuota attainmentJOINaggregationmedium
- sqlsalesforceAverage sales cycle by industrydatesNULL handlinghard
- pythonsalesforceWeighted forecastdictsfunctionsmedium
- sqlrobinhoodTrade volume per symbolGROUP BYSUMeasy
- sqlrobinhoodNet open position valueJOINaggregationhard
- sqlrobinhoodMonthly active tradersdatesDISTINCTmedium
- pandasrobinhoodRealized profit and lossgroupbyapplyhard
- pythonrobinhoodMax drawdownloopsmathhard
- sqlappleDevice activations by countryGROUP BYORDER BYeasy
- sqlappleRevenue by app categoryJOINSUMeasy
- sqlappleApps that never soldLEFT JOINNULLmedium
- sqlappleMonthly App Store revenuestrftimeGROUP BYmedium
- sqlappleAverage session length per appJOINHAVINGmedium
- sqlappleActive subscription value by planfilteringaggregationmedium
- sqlappleSpend per user with device modelJOINGROUP BYmedium
- sqlappleRunning revenue by monthWindow functionsrunning totalhard
- sqlappleMonth-over-month revenue changeLAGWindow functionshard
- sqlappleShort-lived subscriptionsdatesjuliandayhard
- pandasappleMinutes per appgroupbysorteasy
- pandasappleCrash rate per appgroupbyratiosmedium
- pandasappleTop spender per countrygroupbyidxmaxmedium
- pandasappleDaily engagement pivotpivot_tablereshapinghard
- pythonappleValidate device serialsstringsvalidationeasy
- pythonappleSubscription renewal scheduledatesloopsmedium
- pythonappleRefund window checkerlogicdictsmedium
- pythonappleLongest daily usage streakdatesstreakshard
- sqlmicrosoftTenants by planGROUP BYSUMeasy
- sqlmicrosoftAzure spend per servicearithmeticGROUP BYeasy
- sqlmicrosoftSpend per tenant nameJOINGROUP BYmedium
- sqlmicrosoftUnresolved critical and high alertsfilteringJOINmedium
- sqlmicrosoftTeams engagement per tenantaggregationDISTINCTmedium
- sqlmicrosoftSeat utilisationJOINratiosmedium
- sqlmicrosoftChurned license valuefilteringdatesmedium
- sqlmicrosoftCompute spend share per tenantWindow functionsratioshard
- sqlmicrosoftTop spending day per tenantWindow functionsROW_NUMBERhard
- sqlmicrosoftCompute spend growth March to AprilpivotCASEhard
- pandasmicrosoftCost per tenantassigngroupbyeasy
- pandasmicrosoftService mix matrixpivot_tablefillnamedium
- pandasmicrosoftActive seats per tenantfilteringgroupbymedium
- pythonmicrosoftParse a meter linestringsparsingeasy
- pythonmicrosoftAlert severity escalationdictssortingmedium
- pythonmicrosoftMerge overlapping meeting blocksintervalssortinghard
- sqltiktokVideos posted per creatorJOINGROUP BYeasy
- sqltiktokMost used soundsGROUP BYCOUNTeasy
- sqltiktokVideo completion rateJOINratiosmedium
- sqltiktokCoins earned per creatorJOINSUMmedium
- sqltiktokLike rate by soundJOINAVGmedium
- sqltiktokCreators without giftsNOT EXISTSanti-joinmedium
- sqltiktokWatch time per countrymulti-joinSUMmedium
- sqltiktokTop video per creatorWindow functionsROW_NUMBERhard
- sqltiktokFollower conversion after viewingEXISTSmulti-joinhard
- sqltiktokGifting rank within countryRANKpartitioned windowshard
- pandastiktokAverage watch percentagegroupbyderived columnsmedium
- pandastiktokRolling 3-day coin totalrollingtime serieshard
- pandastiktokEngagement leaderboardaggmultiple metricsmedium
- pythontiktokExtract hashtagsstringsparsingeasy
- pythontiktokFeed deduplicationlistssetsmedium
- pythontiktokTop k trending soundsheapscountinghard
- sqlopenaiRequests per modelGROUP BYCOUNTeasy
- sqlopenaiTotal tokens per organisationJOINSUMeasy
- sqlopenaiError and rate-limit rateCASEratiosmedium
- sqlopenaiSpend per modelJOINpricingmedium
- sqlopenaiAverage latency by modelAVGHAVINGmedium
- sqlopenaiAccounts near their token limitJOINthresholdsmedium
- sqlopenaiFine-tune success rateCASEGROUP BYmedium
- sqlopenaiOutput-to-input token ratioratioswindow functionshard
- sqlopenaiDaily spend with running totalwindow functionsrunning totalhard
- sqlopenaiHeaviest request per accountcorrelated subqueryMAXhard
- pandasopenaiSpend by organisationmergegroupbymedium
- pandasopenaiLatency percentiles per modelquantileagghard
- pandasopenaiStatus breakdown sharecrosstabnormalizemedium
- pythonopenaiEstimate token costarithmeticroundingeasy
- pythonopenaiSliding window rate limitersliding windowqueueshard
- pythonopenaiPrompt cache hit ratiodictsratiosmedium
- sqlsnowflakeCredits per warehouseJOINSUMeasy
- sqlsnowflakeFailed queries by userfilteringGROUP BYeasy
- sqlsnowflakeQueries that spilled to remote storageJOINfilteringmedium
- sqlsnowflakeAverage scan size per warehouse sizeJOINAVGmedium
- sqlsnowflakePoorly clustered tablesfilteringorderingmedium
- sqlsnowflakeCredit efficiency per warehousemulti-CTEratiosmedium
- sqlsnowflakeActive shares per databasefilteringGROUP BYmedium
- sqlsnowflakeShare of credits per warehouseWindow functionsshare of totalhard
- sqlsnowflakeSlowest query per userWindow functionsROW_NUMBERhard
- sqlsnowflakeDay-over-day credit changeLAGWindow functionshard
- pandassnowflakeScan efficiency per warehousegroupbyderived metricsmedium
- pandassnowflakeSpill rate by usergroupbymeanmedium
- pandassnowflakeCredits with cumulative sharecumsumrankinghard
- pythonsnowflakeWarehouse size orderingsortingdictseasy
- pythonsnowflakeAuto-suspend savingssimulationarithmeticmedium
- pythonsnowflakeDetect query gaps and islandsgaps and islandsintervalshard
- sqldatabricksRuns per jobGROUP BYCOUNTeasy
- sqldatabricksDelta size per catalogGROUP BYSUMeasy
- sqldatabricksCluster compute hoursJOINarithmeticmedium
- sqldatabricksJob failure rateCASEratiosmedium
- sqldatabricksSpot versus on-demand spendJOINCASEmedium
- sqldatabricksTables needing compactionratiosfilteringmedium
- sqldatabricksStale vacuum auditdatesjuliandaymedium
- sqldatabricksCost per successful runmulti-joinratioshard
- sqldatabricksRecursive lineage descendantsrecursive CTEgraphshard
- sqldatabricksRun duration trend per jobLAGWindow functionshard
- pandasdatabricksAverage runtime per jobgroupbymeaneasy
- pandasdatabricksRetry hotspotsfilteringgroupbymedium
- pandasdatabricksSmall file ratio per catalogmergederived metricsmedium
- pandasdatabricksDaily pipeline healthpivot_tablesuccess ratehard
- pythondatabricksParse a cluster specstringsdictseasy
- pythondatabricksRetry with exponential backoffloopssimulationmedium
- pythondatabricksTopological order of a pipelinegraphstopological sorthard
- pythondatabricksCompact small filesgreedybin packinghard
- sqlgoogleSearch click-through by categoryGROUP BYHAVINGmedium
- sqlgoogleRolling 7-day active creatorsself joinrolling windowhard
- sqlgoogleAdvertiser spend cohortscohortsstring functionshard
- pythongoogleCampaign tracking from URLsstringsparsingmedium
- pandasgoogleAd auction eCPM by campaigngroupbyderived metricsmedium
- sqlmetaReels completion funnelfunnelsCOUNT DISTINCTmedium
- sqlmetaFriend suggestions by mutual friendsgraphself joinhard
- pythonmetaMessage delivery percentilessortingpercentilesmedium
- pandasmetaLast-click attribution windowmergefilteringhard
- sqlstripeMerchants above the dispute thresholdGROUP BYHAVINGmedium
- sqlstripeMulti-currency settlement in USDJOINFXhard
- pythonstripeLuhn card checkalgorithmsstringsmedium
- pandasstripeMRR movement breakdownmergepivothard
- sqlamazonFulfilment centre late-shipment rateCASEdatesmedium
- sqlamazonFrequently bought togetherself joinmarket baskethard
- pythonamazonPrime delivery promisedatesconditionalsmedium
- pandasamazonBuy Box win rate and price gapgroupbyderived metricsmedium
- sqlspotifyListener depth bucketsCASEsubquerymedium
- sqlspotifyRecommendation skip and save ratesCASEratioshard
- pythonspotifyDeduplicate playlist tracksstringssetsmedium
- pandasspotifyPro-rata royalty payoutsmergegroupbyhard
- sqlnetflixBinge velocity per profiledatesGROUP BYmedium
- sqlnetflixConcurrent streams per householdself joinintervalshard
- pandasnetflixWatch time before cancellingmergedate filteringmedium