Тёмный
No video :(

Split Hierarchy - SQL Interview Query 12 | SQL Problem Level "HARD" 

techTFQ
Подписаться 322 тыс.
Просмотров 9 тыс.
50% 1

Опубликовано:

 

26 авг 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 43   
@vikramjitsingh6769
@vikramjitsingh6769 5 месяцев назад
I think u used a lengthy and confusing approch- my soln would be - with recursive cte as ( select employee ,manager, row_number() over () as x from company where manager = (select employee from company where manager is null) union all select d.employee, d.manager, x from cte c join company d on c.employee = d.manager ) select concat('team',x) as teams, group_concat(manager separator ',') as members from (select manager , x from cte union select employee,x from cte )y group by x order by x;
@user-dw4zx2rn9v
@user-dw4zx2rn9v 5 месяцев назад
Great solution, I am thinking to solve this without using recursive function as I know for small hierarchy self join would work but there is too many hierarchy it doesn't. What is your thought in this?
@muhammadabbas6645
@muhammadabbas6645 5 месяцев назад
bro to be honest I was trying to solve using the video method but having trouble and found your solution it was very easy to understand thanks bro
@muhammadabbas6645
@muhammadabbas6645 5 месяцев назад
@vikramjitsingh6769 bro I have done just like yours but modify few things can you please tell me is that okay regards with recursive cte as ( select employee ,manager, concat('team ',row_number() over (order by employee)) as rn from company where manager = (select employee from company where manager is null) union all select d.employee,d.manager,rn from cte join company d on cte.employee = d.manager) ,final_cte as ( select rn as teams, string_agg(employee,',') as emp from cte group by rn ) select teams, concat(employee,',',emp) as MEMBERS from company c cross join final_cte where c.manager is null ORDER BY teams
@vikramjitsingh6769
@vikramjitsingh6769 5 месяцев назад
@@muhammadabbas6645 yep it works 👍
@sivakrishnasriram4782
@sivakrishnasriram4782 5 месяцев назад
you did a great job bro👍.
@malcorub
@malcorub 5 месяцев назад
This one was over my head, I need to work on my recursive cte understanding. At any rate I always learn from your videos even when i don't fully understand the final solution.
@shivinmehta7368
@shivinmehta7368 3 месяца назад
with recursive cte as ( select manager,employee,row_number() over (order by employee) as rn from company where manager=(select employee from company where manager is null) union select b.manager,b.employee, rn from cte join company b on cte.employee=b.manager ) select concat ('Team ', rn),concat((select employee from company where manager is null),',',string_agg(employee,',')) from cte group by 1 order by 1
@Rameshkumar-dk8me
@Rameshkumar-dk8me 5 месяцев назад
You have made with great logic, I revised 2 times to get the logic... but this problem is very challenging
@Parthasarathy.S-qi8vy
@Parthasarathy.S-qi8vy 5 месяцев назад
Mysql solution: with recursive cte as (select employee, manager, concat("Team ", row_number() over (order by employee) ) as team from company where manager in (select employee from company where manager is null) union all select co.employee, co.manager, cte.team from cte join company co where cte.employee = co.manager), cte2 as (select team,(select employee from company where manager is null) as manager, group_concat(employee) as people from cte group by team) select Team,concat(manager,",",people) as people from cte2;
@AdityaKumar-qi9ed
@AdityaKumar-qi9ed 4 месяца назад
this solution just bounced right over my head
@fathimafarahna2633
@fathimafarahna2633 5 месяцев назад
As always best 😊
@Damon-007
@Damon-007 5 месяцев назад
Sir the above solution works only when we add new teams in the table, if there is another hierarchy it will not give results. I write solution of above query it might works for that problem too team(please correct me sir if I'm wrong) MS Sql --new hierarchy insert into company values ('david',null); insert into company values ('bill','david'); select * from company; with root as( select employee from company where manager is null) , teams as( select concat('team ',row_number() over ( partition by root.employee order by (select null)),' of_',root.employee) team , c.employee, root.employee as manager from company c inner join root on root.employee=c.manager) ,rec as( select team,employee,manager from teams union all select rec.team, c.employee, c.manager from rec inner join company c on rec.employee=c.manager ) select team, string_agg(employee, ',') members from (select team, employee from rec union select team,manager from rec) k group by team Order by team;
@yi-lehung6311
@yi-lehung6311 5 месяцев назад
This problem is so hard, I didn't think about the recursive... Instead, I used multiple cte to solve the problem haha
@kanappilly
@kanappilly 5 месяцев назад
I modified this query to sql server , but error message says Msg 462, Level 16, State 1, Line 1 Outer join is not allowed in the recursive part of a recursive common table expression 'cte'. How to resolve this?
@jojohoney6246
@jojohoney6246 27 дней назад
In DB2 joins are not allowed inside recursive cte
@SujathaAhilan-bj4qe
@SujathaAhilan-bj4qe 5 месяцев назад
Can you please provide sql server solution
@charanteja6808
@charanteja6808 5 месяцев назад
Toughest and most confusing one so far.
@splendidabhi
@splendidabhi 5 месяцев назад
Thankyou so much
@user-mq3st9cl9j
@user-mq3st9cl9j 5 месяцев назад
Thank you so much sir
@challajeevan4649
@challajeevan4649 5 месяцев назад
what is the solution we made 200 tables updated in sql server replication got blocks
@jjayeshpawar
@jjayeshpawar 5 месяцев назад
Shared dataset is older, please provide for this query
@shashanktiwari133
@shashanktiwari133 5 месяцев назад
scroll down to the bottom of the page and you will see problem 12 dataset link there
@techTFQ
@techTFQ 5 месяцев назад
sorry my bad, have updated the link now. plz check
@techTFQ
@techTFQ 5 месяцев назад
Have updated the correct link now
@sam02109
@sam02109 5 месяцев назад
This is scary for me
@amartyakumarsaha338
@amartyakumarsaha338 5 месяцев назад
19:16 use of Coalesc() is not clear to me.
@vishnugottipati9373
@vishnugottipati9373 5 месяцев назад
plz provide ms sql server solution
@naveendevihosur8050
@naveendevihosur8050 5 месяцев назад
plz provide class 12 th dataset, the shared dataset is of previous class
@techTFQ
@techTFQ 5 месяцев назад
have updated the link now. plz check
@harishbagran6052
@harishbagran6052 5 месяцев назад
🤯🤯
@pveeranjireddy8959
@pveeranjireddy8959 4 месяца назад
It looks difficult to understand Thoufiq.
@CebuProvince
@CebuProvince 5 месяцев назад
Hi, your source code brings following error, do you check the source code before you offer this to the public? sg 102, Level 15, State 1, Procedure spChallange#12, Line 25 [Batch Start Line 7] Incorrect syntax near 'cte'. Msg 102, Level 15, State 1, Procedure spChallange#12, Line 39 [Batch Start Line 7] Incorrect syntax near ','.
@techTFQ
@techTFQ 5 месяцев назад
Do you think I post garbage script to public ? If you have followed my videos, you would know that the scripts given is for PostgreSQL database and I had mentioned in a previous video when it comes to recursive query in MS SQL Server database, you need to make slight syntactical changes.
@rohit_vora
@rohit_vora 4 месяца назад
here is my solution with recursive cte as (select 'team'||row_number()over(order by c2.employee) as teams, c1.employee e1, c2.employee e2 from company c1 join company c2 on c1.employee = c2.manager where c1.manager is null), cte2 as (select teams, e1, e2 from cte union select cte2.teams,cte2.e1, c3.employee e2 from cte2 join company c3 on cte2.e2 = c3.manager), cte3 as (select teams, e1,string_agg(e2,',') members from cte2 group by 1,2) select teams, (e1||','||members) as team from cte3 order by 1
@Alexpudow
@Alexpudow 5 месяцев назад
ms sql approach with a as ( select c2.employee, c2.manager, 1 hier, ROW_NUMBER() over(order by c2.employee) team from company c1 join company c2 on c2.manager=c1.employee where c1.manager is null union all select company.employee, company.manager, hier+1 hier, a.team from a join company on a.employee=company.manager ), b as ( select employee, team, ROW_NUMBER() over(partition by team order by hier) rn from ( select manager employee, team, 0 hier from a where hier = 1 union all select employee, team, hier from a ) t ) select concat('team',team) team, string_agg(employee, ',') WITHIN GROUP (ORDER BY rn) members from b group by team
@gphanisrinivasful
@gphanisrinivasful 5 месяцев назад
Great approach! Liked how you added root node to all 3 teams in cte b.
@DEEPAK-jx5si
@DEEPAK-jx5si 5 месяцев назад
Here is my solution with cte as( SELECT c1.*, c2.manager as second_manager FROM company c1 join company c2 on c1.manager = c2.employee), cte2 as ( select cte.*, c.manager as third_manager from cte join company c on cte.second_manager = c.employee),cte3 as( select STRING_AGG(employee,',') employees, manager, second_manager,third_manager from cte2 group by manager, second_manager,third_manager) ,cte4 as( select employees, manager, second_manager,coalesce(third_manager,'') third_manager from cte3 where cte3.employees not in (select manager from cte3)) select concat('Team ',row_number() over(order by manager)) Teams, concat(third_manager,',',second_manager,',', manager,',',employees) as members from cte4
@ShirleyShi-zb5us
@ShirleyShi-zb5us 5 месяцев назад
with recursive cte as ( select two_level.employee_name, root.employee_name as manager_name, concat('Teams ',row_number()over(order by two_level.employee_name) )as teams, 1 as level from public.employee_manager root join public.employee_manager two_level on root.employee_name = two_level.manager_name where root.manager_name is null union select all_emp.*,cte.teams,cte.level+1 as level from public.employee_manager all_emp join cte on all_emp.manager_name = cte.employee_name ) select teams,string_agg(members,',') as members_list from ( select teams, case when level=1 then concat_ws(',',manager_name,employee_name) else concat_ws(',',employee_name) end as members from cte )a group by teams order by teams
@7vensandy_Data_Analyst
@7vensandy_Data_Analyst 4 месяца назад
with cte as ( SELECT c1.employee as E1, c2.employee as E2,c3.employee as E3,c3.manager as M1 FROM company c1 cross join company c2 on c1.manager=c2.employee cross join company c3 on c2.manager=c3.employee AND C1.EMPLOYEE NOT IN (select distinct MANAGER from company WHERE MANAGER IS NOT NULL) ), CTE2 AS (select group_concat(E1) AS EE,E2,E3,M1 from cte GROUP BY E2,E3,M1) SELECT CONCAT("Team ",row_number() OVER()) as Teams ,CASE WHEN M1 IS NULL THEN CONCAT(e3,",",e2,",",EE) else concat(m1,",",e3,",",e2,",",EE) end AS MEMBERS FROM CTE2 ORDER BY LENGTH(MEMBERS) desC;
Далее
拉了好大一坨#斗罗大陆#唐三小舞#小丑
00:11
I've been using Redis wrong this whole time...
20:53
Просмотров 354 тыс.
Database Indexing for Dumb Developers
15:59
Просмотров 53 тыс.
Super Interesting SQL Problem | Practice SQL Queries
18:24
拉了好大一坨#斗罗大陆#唐三小舞#小丑
00:11