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

Поделиться
HTML-код
  • Опубликовано: 29 янв 2025

Комментарии • 205

  • @onkarbarhate7799
    @onkarbarhate7799 Месяц назад +2

    Thank you for your SQL learning videos! Watching them has significantly boosted my confidence, and I also subscribed to your SQL session on your techtfq website.
    While going through one of your videos, I noticed a minor error: in the WHERE clause, the second condition should use 'OR' instead of 'AND'.
    Just thought to share this feedback. Keep up the great work!
    with cte as
    (select *,
    case when brand1 < brand2 then concat(brand1, brand2, year)
    else concat(brand2,brand1,year)
    end as new_grp_2
    from brands),
    cte_2 as
    (select *, dense_rank() over(partition by new_grp_2 order by brand1) as rnk
    from cte)
    select cte_2.brand1, cte_2.brand2,cte_2.year, cte_2.custom1,cte_2.custom2,cte_2.custom3,cte_2.custom4
    from cte_2
    where rnk 2 or
    (custom1 custom3 or custom2 custom4)

  • @malcorub
    @malcorub 11 месяцев назад +50

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

    • @techTFQ
      @techTFQ  11 месяцев назад +7

      Thats the spirit 😃

    • @somnathdutta6311
      @somnathdutta6311 11 месяцев назад +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 10 месяцев назад +1

      @@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 8 месяцев назад

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

  • @mindlessscroll
    @mindlessscroll 10 месяцев назад +3

    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 8 месяцев назад

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

    • @gauravtanwar8886
      @gauravtanwar8886 8 месяцев назад +2

      but thanks to your answer i got to know about STRCMP

  • @rahuldey4730
    @rahuldey4730 11 месяцев назад +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.

  • @ganeshsundarachary3239
    @ganeshsundarachary3239 10 месяцев назад +5

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

  • @aarizaziz4380
    @aarizaziz4380 10 месяцев назад

    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.

  • @ContentRoomB
    @ContentRoomB 6 месяцев назад

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

  • @junaidmahmud2894
    @junaidmahmud2894 11 месяцев назад +1

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

  • @shwetamishra1497
    @shwetamishra1497 11 месяцев назад +2

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

  • @splendidabhi
    @splendidabhi 11 месяцев назад +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  11 месяцев назад

      Amazing 😍

  • @Hsalz
    @Hsalz 10 месяцев назад

    Simply amazing. Thanks, Thoufiq!

  • @pinkfloyd2642
    @pinkfloyd2642 11 месяцев назад

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

  • @kalpeshispatil
    @kalpeshispatil 11 месяцев назад

    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

  • @beautifulworld3976
    @beautifulworld3976 10 месяцев назад

    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

  • @yi-lehung6311
    @yi-lehung6311 11 месяцев назад

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

  • @MwAVlogs
    @MwAVlogs 10 месяцев назад

    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.

  • @piyushnautiyal6271
    @piyushnautiyal6271 11 месяцев назад +1

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

  • @VijayKumar-ec3dz
    @VijayKumar-ec3dz 9 месяцев назад +2

    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)

  • @dataengineeringsimplified1049
    @dataengineeringsimplified1049 8 месяцев назад +2

    with tbl as
    (
    SELECT *,case when brand1

    • @37_om
      @37_om 5 месяцев назад

      This is somewhat more clear
      i think

  • @VivekKBangaru
    @VivekKBangaru 9 месяцев назад

    Awesome TFQ

  • @ramakrishnatirumala428
    @ramakrishnatirumala428 9 месяцев назад

    super videos bro...keep posting

  • @pavanigoud98
    @pavanigoud98 11 месяцев назад +1

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

  • @khushbu3025
    @khushbu3025 11 месяцев назад

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

  • @khushboobaghel6594
    @khushboobaghel6594 11 месяцев назад +1

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

  • @andreanlobo7373
    @andreanlobo7373 10 месяцев назад +1

    extremely insightful.. thanks

  • @ShubhamGautam-k1k
    @ShubhamGautam-k1k 10 месяцев назад

    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.

  • @prithvirajpatil7388
    @prithvirajpatil7388 10 месяцев назад

    Good question❤ starting it from today.

  • @koushikdey100
    @koushikdey100 10 месяцев назад

    Great !!, Thank you

  • @padhenamit
    @padhenamit 11 месяцев назад

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

  • @inderpanda1
    @inderpanda1 11 месяцев назад +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

  • @ritika29
    @ritika29 10 месяцев назад

    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);

  • @johnsonrajendran6194
    @johnsonrajendran6194 11 месяцев назад

    Love the way you teach ❤

  • @livelovelaugh4050
    @livelovelaugh4050 11 месяцев назад

    Thank you so much for starting this series. 🙏

  • @fathimafarahna2633
    @fathimafarahna2633 11 месяцев назад +2

    Amazing 🔥🎉

    • @techTFQ
      @techTFQ  11 месяцев назад

      Glad you like it!

  • @NEHAKHANZODE-p8p
    @NEHAKHANZODE-p8p 7 месяцев назад

    Thank you for explaining thoroughly :-)

  • @sourabroy7787
    @sourabroy7787 11 месяцев назад

    great initiative and quality content 👍

  • @CricketLivejavwad
    @CricketLivejavwad 11 месяцев назад +5

    Techtfq is back💯😎
    We all are excited.

  • @MuhammedSavadkv
    @MuhammedSavadkv 9 месяцев назад

    Great. Thank you

  • @mkgeidam
    @mkgeidam 11 месяцев назад +1

    Thanks you Sir, it really helpful

  • @mukeshkumaryadav350
    @mukeshkumaryadav350 3 дня назад

    with cte as (
    Select *,
    row_number() over(partition by case when brand1>brand2 then concat(brand1, brand2, year)
    else concat(brand2, brand1, year) end ) as rn
    from brands)
    select * from cte
    where rn=1
    or custom1!= custom3 or custom2!=custom4

  • @sandydsa
    @sandydsa 11 месяцев назад

    Fantastic 🌻🌻🌻

  • @Venkatesh-bs7kb
    @Venkatesh-bs7kb 10 месяцев назад

    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)')

  • @navaneeth6414
    @navaneeth6414 11 месяцев назад

    Great! video Thanks

    • @techTFQ
      @techTFQ  11 месяцев назад

      Glad you liked it!

  • @BitaGen
    @BitaGen 11 месяцев назад

    Nice video

  • @haleylearn
    @haleylearn 8 месяцев назад +1

    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) ?

    • @AJBeiza
      @AJBeiza 4 месяца назад

      I had same question, I think just an error. Output is the same in this case but given other entries the output would be different

  • @Itsourfamilys
    @Itsourfamilys 9 месяцев назад

    Thank you so much for SQL videos

  • @abhishekkukreja6735
    @abhishekkukreja6735 9 месяцев назад

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

  • @jollymeelubari9045
    @jollymeelubari9045 10 месяцев назад

    Thanks for this

  • @ananth.r5317
    @ananth.r5317 10 месяцев назад

    Thanks lots..❤❤❤❤

  • @vishalmaurya3008
    @vishalmaurya3008 11 месяцев назад +1

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

  • @aswinc4829
    @aswinc4829 11 месяцев назад

    Thank you,it really helps

  • @vishisbest
    @vishisbest 11 месяцев назад

    This was pretty interesting

  • @ManiKandan-kg5ky
    @ManiKandan-kg5ky 11 месяцев назад

    Waiting bro

  • @MrYeduguri
    @MrYeduguri 11 месяцев назад

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

  • @riyatiwari4767
    @riyatiwari4767 11 месяцев назад

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

  • @neejudeshwal6515
    @neejudeshwal6515 11 дней назад

    Thanks sir

  • @phamnguyentrucgiang569
    @phamnguyentrucgiang569 10 месяцев назад

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

  • @AbhishekPandey-c8o
    @AbhishekPandey-c8o 11 месяцев назад

    i was waiting for this

  • @madhurimadas6260
    @madhurimadas6260 11 месяцев назад

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

    • @bhanugoyal428
      @bhanugoyal428 10 месяцев назад

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

  • @srinubathina7191
    @srinubathina7191 11 месяцев назад

    Thank You sir

  • @khushboobaghel6594
    @khushboobaghel6594 11 месяцев назад

    Thankyou Sir

  • @manirahofred801
    @manirahofred801 9 месяцев назад

    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!

  • @sivakrishnasriram4782
    @sivakrishnasriram4782 11 месяцев назад

    Thank You😊.

  • @sandeepkumarsingh7981
    @sandeepkumarsingh7981 11 месяцев назад

    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.....

  • @pathanfirozkhan5503
    @pathanfirozkhan5503 11 месяцев назад +1

    Amazing video sir, Thanks for your time

  • @waynegreen7970
    @waynegreen7970 11 месяцев назад

    Good content!

    • @techTFQ
      @techTFQ  11 месяцев назад

      Glad you think so!

  • @jayavinayak2593
    @jayavinayak2593 11 месяцев назад +1

    Thank You

    • @techTFQ
      @techTFQ  11 месяцев назад

      You're welcome

  • @Dopamine.Moments
    @Dopamine.Moments 11 месяцев назад

    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. 😊

  • @nehalmaheshwari1999
    @nehalmaheshwari1999 6 месяцев назад

    @techTFQ Shouldn't the custom1 of one of the row be compared with the custom3 of the other row having same airID instead of the same row?

  • @PraveenSinghRathore-df3td
    @PraveenSinghRathore-df3td 3 месяца назад

    MYSQL solution:
    with cte as (select *, case when brand1 < brand2 then concat(brand1,'-',brand2)
    else concat(brand2,'-',brand1) end as pair from brands)
    , cte2 as (select *, row_number() over(partition by pair,year order by (select null)) as rn from cte)
    select brand1, brand2, year, custom1, custom2, custom3, custom4 from cte2
    where case when (custom1 = custom3) or (custom2 = custom4) then rn = 1
    else rn >= 1 end;

  • @tornado9689
    @tornado9689 11 месяцев назад

    My question is you can also select query with column name what you have done in last to fetch the data . What is the need of using cte then

    • @codeduel
      @codeduel 11 месяцев назад

      For Optimization sake

  • @SamiUllah-ie7pn
    @SamiUllah-ie7pn 11 месяцев назад

    Thanks you😊

    • @techTFQ
      @techTFQ  11 месяцев назад

      Welcome 😊

  • @ahmedjassimameenco
    @ahmedjassimameenco 11 месяцев назад

    thanks

  • @krishkhemani96
    @krishkhemani96 10 месяцев назад

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

  • @m.kirubakaran6564
    @m.kirubakaran6564 11 месяцев назад

    🤞🙏🏻

  • @pavankumar-cw2sx
    @pavankumar-cw2sx 11 месяцев назад

    @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);
    ????????????????

  • @chahatjain3745
    @chahatjain3745 11 месяцев назад +5

    with cte as (Select *, row_number() over(partition by Case
    when brand1>brand2 then CONCAT(brand1,brand2,year)
    else CONCAT(brand2,brand1,year) end order by year) as rn
    from brands)
    Select * from cte rn where rn=1 or (custom1 custom3 and custom2 custom4)

  • @hrishiAOL
    @hrishiAOL 6 месяцев назад

    Can you suggest online SQL editor for practice?

  • @sateeshbabu5792
    @sateeshbabu5792 7 месяцев назад

    Awesome video. do you have video on sql performance ? if yes could you please share.

  • @12Patni
    @12Patni 9 месяцев назад

    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 7 месяцев назад

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

  • @priyankapatil6835
    @priyankapatil6835 10 месяцев назад

    big thanks techTFQ

  • @vikrantlonkar2898
    @vikrantlonkar2898 11 месяцев назад

    Sir can u make videos on trigger,Index and match in SQL

    • @techTFQ
      @techTFQ  11 месяцев назад +1

      Yes, soon

    • @vikrantlonkar2898
      @vikrantlonkar2898 11 месяцев назад

      Thanks a lot I will be waiting for it

  • @lakshitgupta5064
    @lakshitgupta5064 11 месяцев назад

    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?

  • @thirupathinaidusomineni
    @thirupathinaidusomineni 10 месяцев назад

    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)

  • @sweetysweetyvghb
    @sweetysweetyvghb 7 месяцев назад

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

  • @smrutiranjansenapati1695
    @smrutiranjansenapati1695 10 месяцев назад

    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

  • @venkateshmallisetty4196
    @venkateshmallisetty4196 11 месяцев назад +1

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

  • @harinadhbabu309
    @harinadhbabu309 5 месяцев назад

    hi taufiq, Your videos are helping me alot, but your blog has not been opening for last few days. Please do needfull

  • @shristisrivastava1324
    @shristisrivastava1324 10 месяцев назад

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

  • @manvendramingwal8696
    @manvendramingwal8696 9 месяцев назад

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

  • @prithvipampana1492
    @prithvipampana1492 10 месяцев назад

    Bro @malcorub what if brand1 and brand2 length is same

  • @teawithbaety
    @teawithbaety 5 месяцев назад +1

    While using concat () in MySql why am I getting NULL for pair_id?

    • @SwarajLandge-c7f
      @SwarajLandge-c7f 5 месяцев назад

      use this code ---just change case condition
      with cte1 as( select *,
      case
      when brand1

    • @teawithbaety
      @teawithbaety 5 месяцев назад +1

      @@SwarajLandge-c7f okay. Thanks for your help!

  • @mohdtoufique3786
    @mohdtoufique3786 11 месяцев назад

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

  • @tarakganesh1472
    @tarakganesh1472 10 месяцев назад

    Based on the PS shouldn't it be `where rn=1 or custom1 custom3 or custom2 custom4 `?

    • @saitejamanchi1389
      @saitejamanchi1389 10 месяцев назад

      Yes, it should be. I was looking for this comment before putting up.

  • @armaqanalibabaei6980
    @armaqanalibabaei6980 9 месяцев назад

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

  • @amanchourasia8280
    @amanchourasia8280 10 месяцев назад +1

    what if the brand names start with the same letter?

  • @yashmistry1424
    @yashmistry1424 10 месяцев назад

    Can we use self join instead here!

  • @NikhilRaj-sd4xm
    @NikhilRaj-sd4xm 4 месяца назад

    Here is my Solution:
    -- Define the first CTE to calculate the next brand values
    WITH cte AS (
    SELECT *,
    LEAD(brand2, 1, NULL) OVER (PARTITION BY year ORDER BY year) AS next_brand,
    LEAD(brand1, 1, NULL) OVER (PARTITION BY year ORDER BY year) AS next_brand1
    FROM brands
    ),
    -- Define the second CTE to categorize each row
    cte2 AS (
    SELECT *,
    CASE
    WHEN brand1 = next_brand
    AND brand2 = next_brand1
    AND custom1 = custom3
    AND custom2 = custom4 THEN 'group'
    ELSE 'not a group'
    END AS GroupType
    FROM cte
    )
    -- Select rows where GroupType is 'not a group'
    SELECT brand1,
    brand2,
    year,
    custom1,
    custom2,
    custom3,
    custom4
    FROM cte2
    WHERE GroupType = 'not a group';
    Please suggest if it is a good solution or not?

  • @LAVANYAp-u1u
    @LAVANYAp-u1u 10 месяцев назад

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

  • @HimanshuSingh-cf7wr
    @HimanshuSingh-cf7wr 11 месяцев назад

    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