Solving SQL Interview Problem with MULTIPLE solutions | Practice SQL Queries

Поділитися
Вставка
  • Опубліковано 29 лис 2024

КОМЕНТАРІ • 72

  • @Mayank-jw9yy
    @Mayank-jw9yy 4 місяці тому +2

    Now I can watch your videos on loop all the time,
    thanks thoufiq, you can make anyone fall in love with SQL.

  • @sanjeetsignh
    @sanjeetsignh 9 місяців тому +2

    Amazing.. I had another approach.
    select parent_id
    , case when (sum(case when status = 'Active' then 1 else 0 end)) = 0 then 'Inactive' else 'Active' end as status
    from parent_child_status
    group by parent_id

  • @F_A_R_man
    @F_A_R_man 10 місяців тому +2

    Thanks for exercises 😍
    And below is one of my solutions↓
    select
    distinct parent_id,
    case
    when sum(case when status = 'Active' then 1 else 0 end) over(partition by parent_id) = 0 then 'InActive'
    else 'Active'
    end as status
    from
    parent_child_status;

    • @naveenkalyan4700
      @naveenkalyan4700 10 місяців тому

      May I know why you used the aggregate function in a case statement and how it actually works in a case statement?
      I have been trying to understand this but I couldn't 😢. Hope you will be helpful 😊

    • @F_A_R_man
      @F_A_R_man 10 місяців тому +1

      @@naveenkalyan4700 I`m happy to help)
      There are 2 case statements. First one I put in analytic function "SUM(1st case statement) OVER(partition by parent_id)" and then comes 2nd case statement which include that sum analytic function.
      If you need more detailed explanation then let me know )

    • @Mrlegacy1_
      @Mrlegacy1_ 10 місяців тому +1

      Your solution is tricky but simple when you do understand it, I like it👏

    • @F_A_R_man
      @F_A_R_man 10 місяців тому

      @@Mrlegacy1_ Glad that you like it )
      In comments I saw "CTE" solution of what I did. You can see it below↓
      with cte as(
      select parent_id,
      sum(case when status = 'Active' then 1 else 0 end) as act_unact_flag
      from parent_child_status
      group by parent_id)
      select parent_id,
      case when act_unact_flag > 0 then 'Active' else 'Inactive' end as status
      from cte;
      I felt curious about which of this 2 will be faster in performance. Did 4 cross joins and COST difference was 234, CTE was faster.
      FYI: To look for COST (for Oracle sql) you can highlight query and press F10 or highlight query→right click→Explain...→Explain plan

  • @suchitaachari6615
    @suchitaachari6615 8 місяців тому

    Thanks a ton for your SQL videos 👏👏 . Your way of presenting the SQL contents is on another level. No bakwas, detailed explanation👏
    I am here with another solution for the same.
    with c1 as
    (select distinct p_id,sum(case when status='Active' then 1 else 0 end) as flag
    from dup group by 1
    ) select distinct p_id,case when flag=0 then 'InActive' else 'Active' end as status
    from c1

  • @Mrlegacy1_
    @Mrlegacy1_ 10 місяців тому +1

    What more can I say...your videos are just self explanatory, I love this so much....I just finished solving the 22 SQL problems you posted earlier on the painters dataset, it just feels amazing. I'm always waiting for your videos to drop, I do learn a lot from them♥️♥️♥️

  • @suryaeaty7748
    @suryaeaty7748 День тому

    my solution:
    with cte as
    (
    SELECT *, CASE WHEN status = 'Active' THEN 1 ELSE 0
    END AS flag
    FROM parent_child_status
    ),
    cte2 as
    (
    select *,sum(flag) over(partition by parent_id) as check_sum
    FROM cte
    )
    select distinct(parent_id),status from cte2
    where check_sum = 0
    union
    select distinct(parent_id),status from cte2
    where check_sum 0 and status !='InActive'

  • @abhishekgarg9029
    @abhishekgarg9029 10 місяців тому +1

    SOLUTION 7 :
    with cte as(
    select parent_id,
    sum(case when status = 'Active' then 1 else 0 end) as act_unact_flag
    from parent_child_status
    group by parent_id)
    select parent_id,
    case when act_unact_flag > 0 then 'Active' else 'Inactive' end as status
    from cte

  • @ParthaMukherjee-x8k
    @ParthaMukherjee-x8k 9 місяців тому

    I have also Tried in following way -
    With Cte_parent_child_status (Parent_Id, Sts) as
    (
    Select Parent_Id, LISTAGG(Status, ',') Within Group(Order By Parent_Id) Sts
    From parent_child_status
    Group By Parent_Id
    ) Select Parent_Id,
    Case when REGEXP_INSTR(REPLACE(STS,'InActive','No'), 'Active')>0 then 'Active' Else 'InActive' End Status
    from Cte_parent_child_status
    Order By Parent_Id;

  • @nambidasan6314
    @nambidasan6314 10 місяців тому +1

    Thank you Tfq. I am really happy that you have made a video of my question which I have sent over an email to you.

  • @geet_lol
    @geet_lol 9 місяців тому

    Hi Toufiq, i m so glad to find ur channel. Ur way of explaining things is soooooo good. Wish I had found ur channel long before. Never stop doing what u r doing!

  • @swapnilpatil3329
    @swapnilpatil3329 10 місяців тому +2

    Thank you for the amazing explanation with multiple solutions. Always loved to watch your videos.

  • @avi8016
    @avi8016 10 місяців тому

    Just wow!!
    Each solution was different from the other 💯
    Thankyou sir 🙏

  • @kiransheikh8536
    @kiransheikh8536 10 місяців тому

    Dear duty time 20:00 to 8:00 tak hai or check in out k table me 2 column hy empid or checktime or expected output
    Date-timein-timeout-late-early-dutyhour
    Is tarha chahiye
    Slove problem

  • @arthiques2577
    @arthiques2577 10 місяців тому

    with cte as(
    select *,sum(case when status='Active' then 1 else 0 end )over(partition by parent_id)as flag
    from parent_child_status)
    select distinct parent_Id,case when flag>0 then 'Active' else '
    inactive' end as status
    from cte;

    • @petermugo9204
      @petermugo9204 10 місяців тому

      Same output thanks with cte as(
      select *,
      sum(
      case when status='Active'
      then 1 else 0 end )over(partition by parent_id)as flag
      from parent_child_status)
      select distinct parent_Id,case when flag =0 then 'InActive' else 'Active' end as status
      from cte
      Order by parent_id;

  • @Alexpudow
    @Alexpudow 10 місяців тому

    select parent_id, case when sum(case status when 'Active' then 1 else 0 end) >=1 then 'Active' else 'Inactive' end status
    from parent_child_status
    group by parent_id

  • @elvemoon
    @elvemoon 10 місяців тому +3

    would use QUALIFY if your database support it

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

    Your explanations are just wow 🤟

  • @jkumar8590
    @jkumar8590 10 місяців тому

    Hello, what should be the front end tool for developing forms? How to develop reports? Are you covering them in your courses?

  • @thaheers
    @thaheers 10 місяців тому

    Really appreciate your preparation and efforts to make the videos straight to the point and easily understandable. Keep doing the great work Thoufiq.

  • @whooaaapppp
    @whooaaapppp 9 місяців тому

    I really learned a lot from this video!

  • @shaonimitra1949
    @shaonimitra1949 10 місяців тому

    You videos are a gem... Very informative and well explained.. Please make some videos on SQL Date format and SQL String Functions.

  • @082SRIRAMDR
    @082SRIRAMDR 10 місяців тому

    Your videos are truly incredible, and they have proven to be exceptionally helpful in enhancing my understanding of SQL concepts. I appreciate the effort and clarity you bring to your content, making it easier for me to grasp complex ideas. Thank you for providing such valuable resources!✨✨

  • @sirishaPamisetty-k9o
    @sirishaPamisetty-k9o 10 місяців тому

    Hi sir I saw your video learn how to write SQL queries it's very useful video for all MySQL developers thank you so much and as parllel which course is required for MySQL

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

    In solution 1, why did you need to use group by in active but not in inactive?

  • @sonysingh-vw6quggfd
    @sonysingh-vw6quggfd 10 місяців тому

    Hello sir,
    Can you please provide the query for the below question to fetch the information:
    1.Find all the databases we have in SF non prod account.
    2.Find how many tables we have in each databases
    3.find total record count in each tables in each databases
    4.find last access date by anyone of every table in each databases for all of the above steps, consider only those table which is active or in use
    5.find each table size in GB in every databases
    6. how to find the storage cost in sf for any
    Please help me with this

  • @gocrow23
    @gocrow23 10 місяців тому

    Wonderfully explained, thank you!
    Please explore KQL also and start making similar tutorials if possible, it's very powerful too.

  • @aimanansarmomin4542
    @aimanansarmomin4542 10 місяців тому

    Please make a video on date function. And create a table with time column and show how to insert the time

  • @gcpchannelforbegineers7080
    @gcpchannelforbegineers7080 10 місяців тому

    select parent_id,min(status) as status from table group by parent_id ;

  • @gowrikm-n5u
    @gowrikm-n5u 10 місяців тому

    Really THANK YOU SOOOO... MUCH🙂🙂🙂

  • @jdisunil
    @jdisunil 10 місяців тому

    you made my day, I learnt it.

  • @safyan_yaqoob
    @safyan_yaqoob 10 місяців тому

    Thank you so much for the easy explanation, your videos are amazing.

  • @anchal7876
    @anchal7876 10 місяців тому

    with cte as (select parent_id,max(case when status='Active' then status else null end) as Active,
    max(case when status='Inactive' then status else null end) as Inactive
    from parent_child_status group by parent_id)
    select parent_id,active from cte where Active is not null
    union all
    select parent_id,inactive from cte where Active is null order by parent_id

  • @fahimfaysalall
    @fahimfaysalall 10 місяців тому

    Need more this type of video

  • @HARSHRAJ-wz2rp
    @HARSHRAJ-wz2rp 4 місяці тому

    with cte as(
    select parent_id,
    COUNT(CASE when status="Active" THEN 1 ELSE NULL END) as "active_count"
    FROM parent_child_status GROUP BY parent_id
    )
    select parent_id,
    CASE
    when active_count>0 THEN "active"
    ELSE "inactive"
    END AS "status"
    FROM cte;

  • @ChandraTanikonda
    @ChandraTanikonda 10 місяців тому

    select *from parent_child_status;
    with cte as
    (
    select *,
    rank() over(partition by parent_id order by cnt desc)as rnk
    from(
    select parent_id,status,sum(marks)as cnt
    from(
    select *,
    (case when status = 'Active' then 1
    else 0 end)as marks
    from parent_child_status)as x
    group by parent_id,status
    order by parent_id))
    select parent_id,status
    from cte
    where rnk=1;

  • @gourav.barkle
    @gourav.barkle 10 місяців тому

    Please do this type of video. thansk

  • @monasanthosh9208
    @monasanthosh9208 7 місяців тому

    With CTE as
    (Select Parent_id,group_concat(Child_id),
    Count(Case when status="Active" then 1 end) as S_Count from Parent_child_Status
    group by Parent_id)
    Select Parent_id,
    Case When S_count>=1 then "Active"
    else "Inactive" end as Status from CTE;

  • @MarioTorres736
    @MarioTorres736 10 місяців тому

    I want to work as data analyst before I start my masters in data science and machine learning.
    Problem is : I have graduated recently from biomedical Science

  • @CarlosVolpe-w1n
    @CarlosVolpe-w1n 10 місяців тому

    Can you share the important SQL must do questions from platforms like leetcode, stratascratch, data lemur etc in one video to watch before every interview

  • @akifahmed9610
    @akifahmed9610 10 місяців тому

    I want to practise SQL, can you suggest some sites where I can practise SQL (not for Data Science purpose)?

  • @btkshamsu561
    @btkshamsu561 10 місяців тому

    sir, as a beginner i have a doubt...how do we connect postgre sql server to microsoft excel

  • @nandan7755
    @nandan7755 10 місяців тому

    Thanks 👍 explanation is really amazing ❤

  • @kevinwtao5321
    @kevinwtao5321 10 місяців тому

    Amazing.... thanks!

  • @abhishekgowda1776
    @abhishekgowda1776 10 місяців тому

    Thank you 😊

  • @vikaskumar-qr5tj
    @vikaskumar-qr5tj 10 місяців тому

    Amazing..

  • @MonicaChen-c5b
    @MonicaChen-c5b 10 місяців тому

    good!

  • @ekpenkovictor2638
    @ekpenkovictor2638 10 місяців тому

    Please help me solve this..write a query to get the least accounts that had the least amount sold in the month of December 2015.. thanks

  • @HARSHRAJ-gp6ve
    @HARSHRAJ-gp6ve Місяць тому

    with cte as(
    select parent_id,
    COUNT(CASE when status="Active" THEN 1 ELSE NULL END) as x1,
    COUNT(CASE when status="InActive" THEN 1 ELSE NULL END) as x2
    FROM parent_child_status GROUP BY parent_id
    )
    select parent_id,
    CASE
    when x1>0 THEN 'Active'
    ELSE 'InActive'
    END AS status
    FROM cte;

  • @kkrkk1113
    @kkrkk1113 9 місяців тому

    Hello sir I have one doubt,in there are are 2nd solution has where rn=1,what is the meaning rn

  • @rajareddy3848
    @rajareddy3848 9 місяців тому

    when will start new sql batch ?

  • @sagarmagdum7407
    @sagarmagdum7407 10 місяців тому

    SQL king
    I like it

  • @gazart8557
    @gazart8557 10 місяців тому

    How can you apply min or max to a string type column ? I am referring to status column

    • @Mrlegacy1_
      @Mrlegacy1_ 10 місяців тому

      But you saw that it worked right?

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

    Done

  • @subhranshuchaulia
    @subhranshuchaulia 10 місяців тому

    Hi TFQ

  • @vinaytekkur
    @vinaytekkur 10 місяців тому +1

    WITH get_active_inactive_status AS(
    SELECT
    parent_id,
    SUM(CASE WHEN status='Active' THEN 1 ELSE 0 END) AS active_status,
    SUM(CASE WHEN status='InActive' THEN 1 ELSE 0 END) AS inactive_status
    FROM parent_child_status
    GROUP BY parent_id)
    SELECT
    parent_id,
    CASE WHEN active_status > 0 THEN 'Active' ELSE 'InActive' END AS final_status
    FROM get_active_inactive_status;

  • @arjundev4908
    @arjundev4908 10 місяців тому

    WITH CTE AS(SELECT *,
    CASE WHEN PARENT_ID IN(SELECT PARENT_ID FROM PARENT_CHILD_STATUS
    WHERE STATUS = "ACTIVE") THEN "ACTIVE" ELSE "INACTIVE" END AS NEW_STATUS
    FROM PARENT_CHILD_STATUS)
    SELECT PARENT_ID, NEW_STATUS AS STATUS
    FROM CTE
    GROUP BY 1;

  • @anudeepreddy5559
    @anudeepreddy5559 10 місяців тому

    ❤❤🔥 💯

  • @kishorl7190
    @kishorl7190 10 місяців тому

    😅i have a doubt to your last solution min(status) . what if the table has 1 inactive and 2 active then the min(status) will be inactive .

    • @rupeshkumarrk5315
      @rupeshkumarrk5315 10 місяців тому +1

      Min doesn’t work that way, when we do min(status) on a string it will give the lowest character string value. As active starts with A, it is the lowest string value. It will still return active in your case

  • @sateeshkumar2698
    @sateeshkumar2698 10 місяців тому

    Can anyone let me know in which editor code was running?

    • @Gauravop101
      @Gauravop101 10 місяців тому

      His is using pgadmin with dark theme.

    • @sateeshkumar2698
      @sateeshkumar2698 10 місяців тому

      @@Gauravop101 ok, thanks for replying

  • @babag5324
    @babag5324 10 місяців тому

    Python new batch start date plz

  • @abhinavkumar2662
    @abhinavkumar2662 10 місяців тому

    We can use here foreign key