Remove Redundant Pairs - SQL Interview Query 1 | SQL Problem Level "HARD"

Поділитися
Вставка
  • Опубліковано 31 лип 2024
  • 30DaySQLQueryChallenge is a series of 30 videos covering 30 SQL Interview Queries. This is the first video in this series. This video series aims to provide 30 SQL Queries that can be asked during SQL Interviews. In these videos, I will explain how to solve and address such SQL queries during interviews.
    This particular video covers an SQL Interview query that I found on Reddit.
    Learn and Practice SQL on LearnSQL platform below:
    learnsql.com/?ref=thoufiqmoha...
    Let's follow the below routine to make the best use of it:
    1. Watch the UA-cam video (first half) to understand the problem statement.
    2. Go to my discord server (link below), download the dataset for each problem, and try solving it yourself.
    3. Share your solution on Discord and discuss different solutions and issues on my Discord server.
    4. Watch the second half of my UA-cam video to find my solution to the problem.
    5. Share it with your contacts and spread the knowledge.
    DOWNLOAD the Dataset from below:
    Discord server: / discord
    Blog website: techtfq.com/blog/30daysqlquer...
    Timeline:
    00:00 Intro about the #30DaySQLQueryChallenge
    00:58 Problem Statement Query1
    05:43 #30DaySQLQueryChallenge Process to be followed
    07:16 Solution to the Query1
    Thanks for participating in this challenge!
    Good luck and Happy Learning!

КОМЕНТАРІ • 186

  • @Hsalz
    @Hsalz 4 місяці тому

    Simply amazing. Thanks, Thoufiq!

  • @ganeshsundarachary3239
    @ganeshsundarachary3239 4 місяці тому +5

    Awesome , Great learning Experience. Pls make more such challenges.

  • @shwetamishra1497
    @shwetamishra1497 5 місяців тому +1

    Very helpful . Thank you so much big bro for this series, just keep continue.🙏

  • @piyushnautiyal6271
    @piyushnautiyal6271 5 місяців тому +1

    amazing que and the way of solving is awesome.. thank u so much techTFQ!!

  • @aarizaziz4380
    @aarizaziz4380 4 місяці тому

    Thank you very very very much for this initiative. Looking forward to a multi decade event by you just like this! You are one of the best instructors I have come across internet for SQL. hats off to you for taking time to educate us and building the community.

  • @yi-lehung6311
    @yi-lehung6311 5 місяців тому

    still the best SQL video!!!! I love this idea, please continue!

  • @khushboobaghel6594
    @khushboobaghel6594 5 місяців тому +1

    Thankyou for guiding for 30 days it will help us to improove Sql.

  • @khushbu3025
    @khushbu3025 5 місяців тому

    Really, It's very nice 🙂 Thank you for this series.

  • @andreanlobo7373
    @andreanlobo7373 4 місяці тому +1

    extremely insightful.. thanks

  • @beautifulworld3976
    @beautifulworld3976 4 місяці тому

    It is informative from the problem statement we get idea how to solve thank you so much it is helpful for me this 30 days i will become still more strong in SQL database

  • @Dopamine.Moments
    @Dopamine.Moments 5 місяців тому

    You are helping me a lot to build my understanding about SQL, Thanks to you I have cleared most of the interviews by watching and following you. I will be turning in for this series. 😊

  • @padhenamit
    @padhenamit 5 місяців тому

    Thank you for your amazing lectures and feedbacks and thank you for being so supportive!

  • @junaidmahmud2894
    @junaidmahmud2894 4 місяці тому +1

    Great solution. I'm afraid I am a bit late to start but I will definitely continue this!

  • @ContentRoomB
    @ContentRoomB 25 днів тому

    I'm finally done with query 1 with your solution help. looking forward to cracking future questions on my own

  • @sourabroy7787
    @sourabroy7787 5 місяців тому

    great initiative and quality content 👍

  • @kalpeshispatil
    @kalpeshispatil 5 місяців тому

    You are simply amazing buddy... I am user CTE many times, but not as you shown.. Fan of yours... ❤❤ Will be tuning daily.. Your first example has cracked and shown us where we land in DB queries... Thank You For Us Efforts

  • @ramakrishnatirumala428
    @ramakrishnatirumala428 3 місяці тому

    super videos bro...keep posting

  • @koushikdey100
    @koushikdey100 4 місяці тому

    Great !!, Thank you

  • @mkgeidam
    @mkgeidam 5 місяців тому +1

    Thanks you Sir, it really helpful

  • @livelovelaugh4050
    @livelovelaugh4050 5 місяців тому

    Thank you so much for starting this series. 🙏

  • @pinkfloyd2642
    @pinkfloyd2642 5 місяців тому

    Subscribed right away. Great content. Can't wait to watch more of your videos this weekend itself.

  • @prithvirajpatil7388
    @prithvirajpatil7388 4 місяці тому

    Good question❤ starting it from today.

  • @rahuldey4730
    @rahuldey4730 5 місяців тому +1

    Loved the question Sir. Even if I was not able to solve this at my own but after I saw the solution and the logic behind this I am speechless and amazed. This is the type of content we need.

  • @VivekKBangaru
    @VivekKBangaru 3 місяці тому

    Awesome TFQ

  • @johnsonrajendran6194
    @johnsonrajendran6194 4 місяці тому

    Love the way you teach ❤

  • @malcorub
    @malcorub 5 місяців тому +48

    I love the idea! I will be tuning in every day this month.... even on weekends with hangover. LOL

    • @techTFQ
      @techTFQ  5 місяців тому +6

      Thats the spirit 😃

    • @somnathdutta6311
      @somnathdutta6311 5 місяців тому +2

      @@techTFQ Don't give the ans in same video. give ans in next video. It will be more helpful. It will also create a hook for your next video and a short of competition as well.

    • @umangbhatnagar1415
      @umangbhatnagar1415 4 місяці тому

      @@somnathdutta6311 Why making things tough. Let it be easy. We are not as good as you. The video's purpose is to help community who is still in its very crude form.

    • @Useruse867
      @Useruse867 Місяць тому

      @@somnathdutta6311 no one will ever watch as there are many channels who solve and give answer there.

  • @MuhammedSavadkv
    @MuhammedSavadkv 3 місяці тому

    Great. Thank you

  • @aswinc4829
    @aswinc4829 5 місяців тому

    Thank you,it really helps

  • @user-js2vt3nz2k
    @user-js2vt3nz2k Місяць тому

    Thank you for explaining thoroughly :-)

  • @sandydsa
    @sandydsa 4 місяці тому

    Fantastic 🌻🌻🌻

  • @MwAVlogs
    @MwAVlogs 4 місяці тому

    I am new in this field, but like the way you explain. It is a complex one I know but still after practicing I’ll get it.

  • @pavanigoud98
    @pavanigoud98 5 місяців тому +1

    Please also doo the sql interview questions for data analyst. Lots of love ❤

  • @nointernet...1800
    @nointernet...1800 5 місяців тому

    Nice video

  • @jollymeelubari9045
    @jollymeelubari9045 4 місяці тому

    Thanks for this

  • @srinubathina7191
    @srinubathina7191 5 місяців тому

    Thank You sir

  • @vishisbest
    @vishisbest 4 місяці тому

    This was pretty interesting

  • @Itsourfamilys
    @Itsourfamilys 3 місяці тому

    Thank you so much for SQL videos

  • @khushboobaghel6594
    @khushboobaghel6594 5 місяців тому

    Thankyou Sir

  • @fathimafarahna2633
    @fathimafarahna2633 5 місяців тому +2

    Amazing 🔥🎉

    • @techTFQ
      @techTFQ  5 місяців тому

      Glad you like it!

  • @navaneeth6414
    @navaneeth6414 5 місяців тому

    Great! video Thanks

    • @techTFQ
      @techTFQ  5 місяців тому

      Glad you liked it!

  • @The_Narutoboy_15
    @The_Narutoboy_15 5 місяців тому

    thank you sir

  • @ananth.r5317
    @ananth.r5317 4 місяці тому

    Thanks lots..❤❤❤❤

  • @sivakrishnasriram4782
    @sivakrishnasriram4782 5 місяців тому

    Thank You😊.

  • @12Patni
    @12Patni 3 місяці тому

    Thoufiq Mohammed
    Thank you for the thorough explanation. The problem's difficulty level is high.
    Below is my solution: I utilized others columns in the Partition By clause, ensuring accurate row numbering without the need for an additional where clause condition.
    ;with CTE AS (
    Select * ,
    case when brand1 < brand2 then CONCAT(brand1,brand2,year) else CONCAT(brand2,brand1,year) end as Brand
    from [Asif_SQL].[dbo].[brands]
    ),
    CTE_RN AS (
    SELECT *
    , ROW_NUMBER () OVER (PARTITION BY BRAND,CUSTOM1,CUSTOM2,CUSTOM3,CUSTOM4 ORDER BY BRAND ASC ) AS RN
    FROM CTE
    )
    SELECT brand1,brand2,year,custom1,custom2,custom3,custom4
    FROM CTE_RN
    WHERE RN = 1

    • @shabbiransari9731
      @shabbiransari9731 Місяць тому

      What will you do if the brand is of equal length?

  • @ehsanshakeri620
    @ehsanshakeri620 5 місяців тому

    Thank you

  • @pathanfirozkhan5503
    @pathanfirozkhan5503 5 місяців тому +1

    Amazing video sir, Thanks for your time

  • @ManiKandan-kg5ky
    @ManiKandan-kg5ky 5 місяців тому

    Waiting bro

  • @CricketLivejavwad
    @CricketLivejavwad 5 місяців тому +5

    Techtfq is back💯😎
    We all are excited.

  • @ahmedjassimameenco
    @ahmedjassimameenco 5 місяців тому

    thanks

  • @priyankapatil6835
    @priyankapatil6835 4 місяці тому

    big thanks techTFQ

  • @waynegreen7970
    @waynegreen7970 5 місяців тому

    Good content!

    • @techTFQ
      @techTFQ  5 місяців тому

      Glad you think so!

  • @mindlessscroll
    @mindlessscroll 3 місяці тому +2

    With rm as (select *,
    IF(STRCMP(brand1,brand2) > 0, concat(brand1,brand2,year), concat (brand2,brand1,year)) as con
    from brands ),
    rm1 as(
    select *,
    row_number() OVER(PARTITION BY con order by con ) as id
    from rm)
    select brand1, brand2, year from rm1 where id=1 or (custom1 custom3 and custom2 custom4)

    • @gauravtanwar8886
      @gauravtanwar8886 2 місяці тому

      as per the 3rd condition you need a little adjustment in your code (custom1 custom3 OR custom2 custom4)*

    • @gauravtanwar8886
      @gauravtanwar8886 2 місяці тому +1

      but thanks to your answer i got to know about STRCMP

  • @user-ox4fi3ls8e
    @user-ox4fi3ls8e 4 місяці тому

    we can put union as well in place of or, and case statements for the conditions in place of Row_num window function, rest is same.

  • @VijayKumar-ec3dz
    @VijayKumar-ec3dz 3 місяці тому +1

    Hi sir, My solution is kind of similar as below
    with cte as (select *,case when custom1=custom3 and custom2=custom4 then 1 when custom1custom3 or custom2custom4 then 2 else 3 end as r from t1)
    select * except(r,rn) from (select *,row_number() over(partition by r,year order by year) as rn from cte) a where coalesce(case when r=1 then rn=1 else null end,1=1)

  • @Venkatesh-bs7kb
    @Venkatesh-bs7kb 4 місяці тому

    Thanks a lot for the video. the way you explain CTE's are awesome!!
    in your solution line number 20, as per problem statement, it should be an OR condition ryt ?
    ('or (custom1 custom3 OR custom2 custom4)')

  • @jayavinayak2593
    @jayavinayak2593 5 місяців тому +1

    Thank You

    • @techTFQ
      @techTFQ  5 місяців тому

      You're welcome

  • @ritika29
    @ritika29 4 місяці тому

    Thanks, it was Helpful 👍
    Quick question, what if there was a row with NULL in brand1 column
    Example: INSERT INTO brands VALUES ( NULL,'lava', 2020, 5, 9, NULL, NULL);

  • @riyatiwari4767
    @riyatiwari4767 5 місяців тому

    Can you please make video on how to write dynamic query in pyspark.
    That would be a lot of help.
    Thank u❤

  • @abhishekkukreja6735
    @abhishekkukreja6735 3 місяці тому

    Awesome, Can you share excel page : it's good to store the results and everthing in excel

  • @sandeepkumarsingh7981
    @sandeepkumarsingh7981 5 місяців тому

    Hi Tafiq, I'm also your huge friend, and your technic is always help to improve my skill. I saw the solution and the logic behind this I am speechless and amazed. This is the type of content we need.
    thanks you so much.
    Hey Tofiq, I have downloaded you content but that file is blank. please help me on that.....

  • @inderpanda1
    @inderpanda1 5 місяців тому +4

    In my opinion at least out of 30 question first 5 should have been Easy to Medium Level.
    It seems to be hard and complex for me.
    The questions should have been from only 1 function among these CTE, Case, Subquery, etc

  • @dataengineeringsimplified1049
    @dataengineeringsimplified1049 2 місяці тому

    with tbl as
    (
    SELECT *,case when brand1

  • @SamiUllah-ie7pn
    @SamiUllah-ie7pn 5 місяців тому

    Thanks you😊

    • @techTFQ
      @techTFQ  5 місяців тому

      Welcome 😊

  • @armaqanalibabaei6980
    @armaqanalibabaei6980 3 місяці тому

    Hi May I ask a question?even thou you have filtered where rn = 1; , I still see one rn=2 in that column why?

  • @splendidabhi
    @splendidabhi 5 місяців тому +2

    Excited to kick off the #30DaySQLQueryChallenge with Query #1! Let's sharpen those SQL skills together and ace those interview queries. Can't wait to see what we'll learn throughout this challenge! 💻💡

    • @techTFQ
      @techTFQ  5 місяців тому

      Amazing 😍

  • @MrYeduguri
    @MrYeduguri 5 місяців тому

    Hello Thoufiq.. Thank you so much for sharing great content. Are you offering online training for sql & plsql?

  • @phamnguyentrucgiang569
    @phamnguyentrucgiang569 4 місяці тому

    ​ @techTFQ Hi, thanks for uploading useful videos. I want to ask: this is easy, medium or hard question?

  • @hrishiAOL
    @hrishiAOL 24 дні тому

    Can you suggest online SQL editor for practice?

  • @krishkhemani96
    @krishkhemani96 4 місяці тому

    I am sure you love cases😂.Make a video on them please 😅

  • @sweetysweetyvghb
    @sweetysweetyvghb Місяць тому

    I couldn't solve myself, but I find it easy after seeing the solution..not sure y.

  • @vishalmaurya3008
    @vishalmaurya3008 5 місяців тому +1

    ❤ 30days of sql >>>>75 days of 😊 hard चैलेंज 😅
    Thank you sir that is extremely amazing❤❤❤❤❤❤❤

  • @lakshitgupta5064
    @lakshitgupta5064 5 місяців тому

    What if after creating the pairid, we just perform groupby operation based on pairid, custom1, custom2, custom3 and custom4 and then filter it by using having count = 1? Will this approach work?

  • @SivaKumarP_alliswell
    @SivaKumarP_alliswell 4 місяці тому

    Below query will also work right ?
    with tab1 as (select * from brands where c1 c3 or c2 c4),
    tab2 as (select * from brands where (b1 is null or b2 is null),
    tab3 as (select b1, b2, year, c1, c2, c3, c4 from brands where c1 = c3 and c2 = c4),
    tab4 as (select b2, b1, year, c1, c2, c3, c4 from brands where c1 = c3 and c2 = c4)
    select * from tab1
    UNION
    select * from tab2
    UNION
    select * from tab3
    UNION
    select * from tab4;

  • @user-tw3rf6oo9h
    @user-tw3rf6oo9h 5 місяців тому

    i was waiting for this

  • @shovabaral2797
    @shovabaral2797 5 місяців тому

    Hello , I am looking help from you ❤

  • @smrutiranjansenapati1695
    @smrutiranjansenapati1695 4 місяці тому

    Hi, Since it has example of 5-6 records, when we have large amount of records, how we can mak sure that the 1st condition if custom1 = custom3 & custom2 = custom4 will not be satisfied to eliminate the duplicate?
    Please reply. Thank you

  • @Unbox9999
    @Unbox9999 5 місяців тому

    More 8 mints to go

  • @venkateshmallisetty4196
    @venkateshmallisetty4196 5 місяців тому +1

    it is very tipical to download the data set could you please help me with that

  • @manirahofred801
    @manirahofred801 3 місяці тому

    This was really helpful. However, if the dataset was too big and brand records were many & different, I don't think "case when" functionality would be helpful. At the moment because of the dataset we have, that would be the easiest way!

  • @sabmelegarebaba1233
    @sabmelegarebaba1233 4 місяці тому

    Bro pz upload 2 video per day😊

  • @cosmicball4888
    @cosmicball4888 4 місяці тому

    but how it check the condition custom1=custom3 and custom2-=custom4
    ?

  • @pavankumar-cw2sx
    @pavankumar-cw2sx 5 місяців тому

    @techTFQ
    Can we give OR condition instead of AND in WHERE condition at final query
    like as: where rn = 1
    or (custom1 custom3 OR custom2 custom4);
    ????????????????

  • @user-vo3yr8hh8w
    @user-vo3yr8hh8w 4 місяці тому

    with cte_check
    as
    (
    select *,
    case when (custom1custom3 and custom2custom4) or custom1 is null or custom2 is null or custom3 is null or custom4 is null then 1
    when brand1 = LEAD(brand2) over(order by year)
    and LEAD(brand1) over(order by year)=brand2
    and year = LEAD(year) over(order by year)
    and (custom1=custom3 and custom2=custom4) then 2 end as dd from brands
    )
    select brand1,brand2,year,custom1,custom2,custom3,custom4
    from cte_check
    where dd in (1,2)

  • @mohdtoufique3786
    @mohdtoufique3786 5 місяців тому

    Thanks a lot for the content..
    WITH PAIRS AS(
    SELECT *,CASE WHEN brand1

  • @shristisrivastava1324
    @shristisrivastava1324 4 місяці тому

    How will you know when to use CTE by looking at the question, sir?

  • @haleylearn
    @haleylearn 2 місяці тому

    For condition: For pairs of brands in the same year ---> if custom1 != custom3 OR custom2 != custom4 : then keep both pairs
    Why is it (custom1 custom3 AND custom2 custom4) NOT is (custom1 custom3 OR custom2 custom4) ?

  • @HimanshuSingh-cf7wr
    @HimanshuSingh-cf7wr 5 місяців тому

    My Approach:-
    select BRAND1,BRAND2,year,Custom1,Custom2,Custom3,Custom4
    from
    (select case when rk=2 and Custom1==custom3 and custom2==custom4 then 1 else 0
    end as duplicate_entry,p.*
    from
    (select row_number() over (partition by common_name,year order by Brand1) as rk,k.*
    from
    (select *,concat(greatest(BRAND1,BRAND2),least(BRAND1,BRAND2)) as common_name from input_table)k)p)o where duplicate_entry1 order by BRAND1

  • @prithvipampana1492
    @prithvipampana1492 4 місяці тому

    Bro @malcorub what if brand1 and brand2 length is same

  • @madhurimadas6260
    @madhurimadas6260 5 місяців тому

    amazing!! can you tell me what to do in case of equal length of brand1 and brand2?
    thanks in advance :)

    • @bhanugoyal428
      @bhanugoyal428 4 місяці тому

      you can put that condition in the same case along with < condition. Ultimately we are concatenating all the records in that cte.

  • @deepakreddy5738
    @deepakreddy5738 3 місяці тому

    Can anyone explain me how to import data into SQL plz. I an unable to join discord server also

  • @asitkandpal4234
    @asitkandpal4234 3 місяці тому

    can anybody evaluate my code how efficient it is. because to me it looks pathetic..
    with trialcte1 as (
    with trialcte as(
    SELECT *, case
    when brand1 != brand2 and custom1 = custom3 and custom2 = custom4 then 'yes'
    else 'no'
    end as'topic'
    FROM product_data)
    select * , row_number() over(partition by topic order by year) as atmpt from trialcte)
    select brand1 , brand2 , year , custom1 , custom2 , custom3 , custom4 from trialcte1
    where (topic = 'no' and atmpt = 1) or
    (topic = 'no' and atmpt = 2) or
    (topic = 'no' and atmpt = 3) or
    (topic = 'no' and atmpt = 4) or
    (topic = 'yes' and atmpt = 1)
    thanks for your help

  • @user-gr9cd6cr8q
    @user-gr9cd6cr8q 4 місяці тому

    I try to download the dataset but I could not able to do it can you help me to download the data set

  • @leoneruri6857
    @leoneruri6857 5 місяців тому

    will you cover ORMs

  • @yashmistry1424
    @yashmistry1424 4 місяці тому

    Can we use self join instead here!

  • @vishalsonawane.8905
    @vishalsonawane.8905 3 місяці тому

    Done

  • @Shruti_Gore
    @Shruti_Gore 2 місяці тому

    Can you make 30 days sql easy to hard playlist

  • @manvendramingwal8696
    @manvendramingwal8696 3 місяці тому

    how about 100 days of database series,from 0 to 100 making people perfect in DB, i would like to join.

  • @saikathazra6732
    @saikathazra6732 5 місяців тому

    Where is the data set ?

  • @user-bv2qd5wt1q
    @user-bv2qd5wt1q 5 місяців тому

    Any way to download the data without using Discord? I am not good at Discord

  • @rajuomkar5220
    @rajuomkar5220 5 місяців тому

    By using dense_rank we can solve this