Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Solutions for SQL 50 Study Plan on LeetCode

NotificationsYou must be signed in to change notification settings

ieshreya/sql-50-leetcode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 

Repository files navigation

Solutions forSQL 50 Study Plan on LeetCode


1757 - Recyclable and Low Fat Products

SELECT product_idFROM ProductsWHERE low_fats='Y'AND recyclable='Y'

584 - Find Customer Referee

SELECT nameFROM CustomerWHERE referee_id!=2OR referee_id ISnull

595 - Big Countries

SELECT name, population, areaFROM WORLDWHERE area>=3000000OR population>=25000000

1148 - Article Views I

SELECT DISTINCT author_idas idFROM ViewsWHERE viewer_id>=1AND author_id= viewer_idORDER BY author_id

1683 - Invalid Tweets

SELECT tweet_idFROM TweetsWHERE length(content)>15

1378 - Replace Employee ID With The Unique Identifier

SELECT unique_id, nameFROM Employees eLEFT JOIN EmployeeUNI euONe.id=eu.id

1068 - Product Sales Analysis I

SELECT product_name, year, priceFROM Sales sLEFT JOIN Product pONs.product_id=p.product_id

1581 - Customer Who Visited but Did Not Make Any Transactions

SELECT customer_id,COUNT(*)as count_no_transFROM VisitsWHERE visit_id NOTIN (SELECT DISTINCT visit_idFROM Transactions)GROUP BY customer_id

197 - Rising Temperature

SELECTw1.idFROM Weather w1, Weather w2WHERE DATEDIFF(w1.recordDate,w2.recordDate)=1ANDw1.temperature>w2.temperature-- ORSELECTw1.idFROM Weather w1, Weather w2WHEREw1.temperature>w2.temperatureAND SUBDATE(w1.recordDate,1)=w2.recordDate

1661 - Average Time of Process per Machine

SELECT machine_id, ROUND(AVG(end- start),3)AS processing_timeFROM (SELECT machine_id, process_id,MAX(CASE WHEN activity_type='start' THENtimestamp END)AS start,MAX(CASE WHEN activity_type='end' THENtimestamp END)AS endFROM ActivityGROUP BY machine_id, process_id)AS subqGROUP BY machine_id

577 - Employee Bonus

SELECT name, bonusFROM Employee eLEFT JOIN Bonus bONe.empId=b.empIdWHERE bonus<1000OR bonus ISNULL

1280 - Students and Examinations

SELECTa.student_id,a.student_name,b.subject_name,COUNT(c.subject_name)AS attended_examsFROM Students aJOIN Subjects bLEFT JOIN Examinations cONa.student_id=c.student_idANDb.subject_name=c.subject_nameGROUP BY1,3ORDER BY1,3

570. Managers with at Least 5 Direct Reports

SELECT nameFROM EmployeeWHERE idIN  (SELECT managerIdFROM EmployeeGROUP BY managerIdHAVINGCOUNT(*)>=5  )-- ORSELECTa.nameFROM Employee aJOIN Employee bWHEREa.id=b.managerIdGROUP BYb.managerIdHAVINGCOUNT(*)>=5

1934. Confirmation Rate

SELECTs.user_id,   ROUND(    COALESCE(SUM(        CASE WHEN ACTION='confirmed' THEN1 END      )/COUNT(*),0),2)AS confirmation_rateFROM Signups sLEFT JOIN Confirmations cONs.user_id=c.user_idGROUP BYs.user_id;

620. Not Boring Movies

-- odd id, "boring", rating descSELECT*FROM CinemaWHERE id %2<>0AND description<>"boring"ORDER BY ratingDESC

1251. Average Selling Price

-- avg(selling), round 2SELECTp.product_id,   ROUND(SUM(price* units)/SUM(units),2)AS average_priceFROM Prices pLEFT JOIN UnitsSold sONp.product_id=s.product_idAND purchase_date BETWEEN start_dateAND end_dateGROUP BYp.product_id

1075. Project Employees I

-- avg(exp_yr), round 2, by projectSELECT project_id, ROUND(AVG(experience_years),2) average_yearsFROM Project pLEFT JOIN Employee eONp.employee_id=e.employee_idGROUP BY project_id

1633. Percentage of Users Attended a Contest

-- % desc, contest_id asc, round 2SELECTr.contest_id,       ROUND(COUNT(DISTINCTr.user_id)*100/ (SELECTCOUNT(DISTINCT user_id)FROM Users),2)AS percentageFROM Register rGROUP BYr.contest_idORDER BY percentageDESC,r.contest_idASC;

1211 Queries Quality and Percentage

--quality - avg(rating/position), poor query % - %(rating < 3), round 2SELECT query_name,     ROUND(AVG(rating/position),2)AS quality,     ROUND(SUM(IF(rating<3,1,0))*100/COUNT(rating),2)AS poor_query_percentageFROM QueriesGROUP BY query_name-- ORSELECT query_name,     ROUND(AVG(rating/position),2)AS quality,     ROUND(SUM(        CASE WHEN rating<3 THEN1 ELSE0 END    )*100/COUNT(rating),2)AS poor_query_percentageFROM QueriesGROUP BY query_name

1193. Monthly Transactions I

-- month, country, count(trans), total(amt), count(approved_trans), total(amt)SELECT DATE_FORMAT(trans_date,'%Y-%m') month, country,COUNT(state) trans_count,SUM(IF(state='approved',1,0)) approved_count,SUM(amount) trans_total_amount,SUM(IF(state='approved', amount,0)) approved_total_amountFROM TransactionsGROUP BY1,2-- ORSELECT DATE_FORMAT(trans_date,'%Y-%m') month, country,COUNT(state) trans_count,SUM(CASE WHEN state='approved' THEN1 ELSE0 END) approved_count,SUM(amount) trans_total_amount,SUM(CASE WHEN state='approved' THEN amount ELSE0 END) approved_total_amountFROM TransactionsGROUP BY1,2

1174. Immediate Food Delivery II

SELECT    ROUND((COUNT(CASE WHENd.order_date=d.customer_pref_delivery_date THEN1 END)/COUNT(*))*100,2)  immediate_percentageFROM Delivery dWHEREd.order_date= (SELECTMIN(order_date)FROM DeliveryWHERE customer_id=d.customer_id    );-- ORSELECT ROUND(AVG(temp.order_date=temp.customer_pref_delivery_date)*100,2) immediate_percentageFROM (SELECT*, RANK() OVER(partition by customer_idORDER BY order_date) odFROM Delivery) tempWHEREtemp.od=1

550. Game Play Analysis IV

WITH login_dateAS (SELECT player_id,MIN(event_date)AS first_loginFROM ActivityGROUP BY player_id),recent_loginAS (SELECT*, DATE_ADD(first_login, INTERVAL1 DAY)AS next_dayFROM login_date)SELECT ROUND((SELECTCOUNT(DISTINCT(player_id))FROM ActivityWHERE (player_id, event_date)IN (SELECT player_id, next_dayFROM recent_login))/ (SELECTCOUNT(DISTINCT player_id)FROM Activity),2)AS fraction

2356. Number of Unique Subjects Taught by Each Teacher

SELECT teacher_id,COUNT(DISTINCT subject_id) cntFROM TeacherGROUP BY teacher_id

1141. User Activity for the Past 30 Days I

SELECT activity_dateas day,COUNT(DISTINCT user_id)AS active_usersFROM ActivityWHERE activity_date BETWEEN DATE_SUB('2019-07-27', INTERVAL29 DAY)AND'2019-07-27'GROUP BY activity_date

1070. Product Sales Analysis III

SELECTs.product_id,s.yearAS first_year,s.quantity,s.priceFROM Sales sJOIN (SELECT product_id,MIN(year)AS yearFROM salesGROUP BY product_id  ) pONs.product_id=p.product_idANDs.year=p.year-- ORWITH first_year_salesAS (SELECTs.product_id,MIN(s.year)as first_yearFROM Sales sINNER JOIN Product pONs.product_id=p.product_idGROUP BYs.product_id)SELECTf.product_id,f.first_year,s.quantity,s.priceFROM first_year_sales fJOIN Sales sONf.product_id=s.product_idANDf.first_year=s.year

596. Classes More Than 5 Students

SELECT classFROM CoursesGROUP BY classHAVINGCOUNT(student)>=5

1729. Find Followers Count

SELECT user_id,COUNT(DISTINCT follower_id)AS followers_countFROM FollowersGROUP BY user_idORDER BY user_idASC

619. Biggest Single Number

SELECT COALESCE(  (SELECT numFROM MyNumbersGROUP BY numHAVINGCOUNT(num)=1ORDER BY numDESCLIMIT1),null)AS num

1045. Customers Who Bought All Products

SELECT customer_idFROM CustomerGROUP BY customer_idHAVINGCOUNT(DISTINCT product_key)= (SELECTCOUNT(product_key)FROM Product)

1731. The Number of Employees Which Report to Each Employee

SELECTe1.employee_id,e1.name,COUNT(e2.employee_id) reports_count, ROUND(AVG(e2.age)) average_ageFROM Employees e1, Employees e2WHEREe1.employee_id=e2.reports_toGROUP BYe1.employee_idHAVING reports_count>0ORDER BYe1.employee_id

1789. Primary Department for Each Employee

SELECT employee_id, department_idFROM EmployeeWHERE primary_flag='Y'UNIONSELECT employee_id, department_idFROM EmployeeGROUP BY employee_idHAVINGCOUNT(employee_id)=1-- ORSELECT employee_id,department_idFROM EmployeeWHERE primary_flag='Y'OR employee_idIN    (SELECT employee_idFROM employeeGROUP BY employee_idHAVINGCOUNT(department_id)=1    )

610. Triangle Judgement

SELECT x, y, z, CASE WHEN x+ y> zAND x+ z> yAND y+ z> x THEN'Yes'ELSE'No' ENDAS triangleFROM Triangle

180. Consecutive Numbers

WITH cteAS (SELECT id, num,     LEAD(num) OVER (ORDER BY id)AS next,     LAG(num) OVER (ORDER BY id)AS prevFROM Logs)SELECT DISTINCT(num)AS ConsecutiveNumsFROM cteWHERE num= nextAND num= prev

1164. Product Price at a Given Date

SELECT product_id, new_priceAS priceFROM productsWHERE (product_id, change_date)IN(SELECT product_id,MAX(change_date)FROM productsWHERE change_date<='2019-08-16'GROUP BY product_id)UNIONSELECT product_id,10AS priceFROM productsWHEN product_id NOTIN(SELECT product_idFROM productsWHERE change_date<='2019-08-16')

1978. Employees Whose Manager Left the Company

SELECT employee_idFROM EmployeesWHERE manager_id NOTIN (SELECT employee_idFROM Employees)AND salary<30000ORDER BY employee_id

185. Department Top Three Salaries

WITH RankedSalariesAS (SELECTe.IdAS employee_id,e.nameAS employee,e.salary,e.departmentId,    DENSE_RANK() OVER (PARTITION BYe.departmentIdORDER BYe.salaryDESC)AS salary_rankFROM Employee e)SELECTd.nameAS Department,r.employee,r.salaryFROM Department dJOIN RankedSalaries rONr.departmentId=d.idWHEREr.salary_rank<=3;

1667. Fix Names in a Table

SELECT user_id, CONCAT(UPPER(LEFT(name,1)),LOWER(RIGHT(name, LENGTH(name)-1)))AS nameFROM UsersORDER BY user_id

1527. Patients With a Condition

SELECT patient_id, patient_name, conditionsFROM patientsWHERE conditionsLIKE'% DIAB1%'OR conditionsLIKE'DIAB1%'

196. Delete Duplicate Emails

DELETE pFROM Person p, Person qWHEREp.id>q.idANDq.Email=p.Email

176. Second Highest Salary

SELECT(SELECT DISTINCT SalaryFROM EmployeeORDER BY SalaryDESCLIMIT1 OFFSET1)AS SecondHighestSalary-- HINT: subquery is used to return null if there is no SecondHighestSalary

1517. Find Users With Valid E-Mails

SELECT*FROM UsersWHERE mail REGEXP'^[A-Za-z][A-Za-z0-9_\.\-]*@leetcode\\.com$'

1204. Last Person to Fit in the Bus

-- 1000 kg limit-- name of last personWITH CTEAS (SELECT person_name, weight, turn,SUM(weight)     OVER(ORDER BY turn)AS total_weightFROM Queue)SELECT person_nameFROM cteWHERE total_weight<=1000ORDER BY total_weightDESCLIMIT1;

1907. Count Salary Categories

SELECT'Low Salary'AS category,SUM(IF(income<20000,1,0))AS accounts_countFROM AccountsUNIONSELECT'Average Salary'AS category,SUM(IF(income>=20000AND income<=50000,1,0))AS accounts_countFROM AccountsUNIONSELECT'High Salary'AS category,SUM(IF(income>50000,1,0))AS accounts_countFROM Accounts

626. Exchange Seats

-- id, student-- swap every two consecutives-- num(students): odd? no swap for last oneSELECT id, CASE WHEN MOD(id,2)=0 THEN (LAG(student) OVER (ORDER BY id))ELSE (LEAD(student,1, student) OVER (ORDER BY id))ENDAS'Student'FROM Seat

1327. List the Products Ordered in a Period

-- name, amt-- >= 100 units, feb 2020SELECTp.product_name,SUM(o.unit)AS unitFROM Products pLEFT JOIN Orders oONp.product_id=o.product_idWHERE DATE_FORMAT(order_date,'%Y-%m')='2020-02'GROUP BYp.product_nameHAVINGSUM(o.unit)>=100

1484. Group Sold Products By The Date

SELECT sell_date,COUNT(DISTINCT product)AS num_sold,GROUP_CONCAT(DISTINCT product)AS'products'FROM ActivitiesGROUP BY sell_dateORDER BY sell_date

1341. Movie Rating

(SELECT nameAS resultsFROM Users uLEFT JOIN MovieRating mrONu.user_id=mr.user_idGROUP BY nameORDER BYCOUNT(rating)DESC, nameASCLIMIT1)UNION ALL(SELECT titleFROM Movies mLEFT JOIN MovieRating mrONm.movie_id=mr.movie_idWHERE DATE_FORMAT(created_at,'%Y-%m')='2020-02'GROUP BY titleORDER BYAVG(rating)DESC, titleASCLIMIT1 )

1321. Restaurant Growth

-- pay: last 7 days (today inclusive) - avg.amt (round, 2)SELECT visited_on, amount, ROUND(amount/7,2)AS average_amountFROM (SELECT DISTINCT visited_on,SUM(amount) OVER(ORDER BY visited_on RANGE BETWEEN INTERVAL6 DAY PRECEDINGAND CURRENT ROW)AS amount,MIN(visited_on) OVER() day_1FROM Customer) tWHERE visited_on>= day_1+6;

602. Friend Requests II: Who Has the Most Friends

-- `union` selects only unique vals, so we use `union all` hereWITH CTEAS (SELECT requester_idAS idFROM RequestAcceptedUNION ALLSELECT accepter_idAS idFROM RequestAccepted)SELECT id,COUNT(id)AS numFROM CTEGROUP BY idORDER BY numDESCLIMIT1

585. Investments in 2016

SELECT    ROUND(SUM(tiv_2016),2)AS tiv_2016FROM insuranceWHERE tiv_2015IN (SELECT tiv_2015FROM insuranceGROUP BY tiv_2015HAVINGCOUNT(*)>1)AND (lat,lon)IN (SELECT lat,lonFROM insuranceGROUP BY lat,lonHAVINGCOUNT(*)=1)

About

Solutions for SQL 50 Study Plan on LeetCode

Topics

Resources

Stars

Watchers

Forks


[8]ページ先頭

©2009-2025 Movatter.jp