No video

Solving SQL Interview Query using a "VERY IMPORTANT SQL concept"

  Рет қаралды 114,919

techTFQ

techTFQ

Күн бұрын

In this video, we look at another SQL interview query. We shall solve this problem using "VERY IMPORTANT SQL concept".
The problem statement might seem complex but the solution is pretty simple. I will explain how the problem can be solved, the logic and thinking behind solving such SQL problems during interviews.
Download the dataset and SQL queries used in this video for free from my blog. Link below:
techtfq.com/bl...
Timestamp:
00:00 Intro
00:29 Understanding the problem statement
01:53 Coming up with the logic to solve the problem
06:34 Solution to SQL Problem
🔴 My Recommended courses 👇
✅ FREE SQL Practice course (valid only until 30-Sep-2022): learnsql.com/c...
✅ Learn complete SQL: learnsql.com/?...
✅ Practice SQL Queries: www.stratascra...
✅ Learn Python: codebasics.io/...
✅ Learn Power BI: codebasics.io/...
🔴 WATCH MORE VIDEOS HERE 👇
✅ SQL Tutorial - Basic concepts:
• SQL Tutorial - Basic c...
✅ SQL Tutorial - Intermediate concepts:
• SQL Tutorial - Interme...
✅ SQL Tutorial - Advance concepts:
• SQL Tutorial - Advance...
✅ Practice Solving Basic SQL Queries:
• Practice Solving BASIC...
✅ Practice Solving Intermediate SQL Queries:
• Practice Solving INTER...
✅ Practice Solving Complex SQL Queries:
• Practice Solving COMPL...
✅ Data Analytics Career guidance:
• Data Analytics career ...
✅ SQL Course, SQL Training Platform Recommendations:
• SQL Course / Training
✅ Python Tutorial:
• Python Tutorial
✅ Git and GitHub Tutorial:
• Git and GitHub
✅ Data Analytics Projects:
• Data Analytics Projects
THANK YOU,
Thoufiq

Пікірлер: 207
@user-we3cu9sy8i
@user-we3cu9sy8i 7 ай бұрын
I think the below one also works. with cte as (select *, row_number() over(partition by buckets) as rn from( select *, ntile(3) over(partition by distance) as buckets from src_dest_distance)) select source,destination,distance from cte where rn
@kartikeytyagi9119
@kartikeytyagi9119 6 ай бұрын
But why we use bucket in this?
@user-we3cu9sy8i
@user-we3cu9sy8i 6 ай бұрын
@@kartikeytyagi9119 in the given query two state names are repeated vice versa and i need to fetch the row which was inserted first. if i create buckets, i can get three buckets for three pairs of states, each bucket will have two rows with vice versa state names and if i apply row number for each bucket, i can be able to get first inserted rows(by using rn
@Anonymous-le2zr
@Anonymous-le2zr Жыл бұрын
I think we can simply write the query using least , Greatest funtions (in Oracle Database) SELECT DISTINCT least(SOURCE, DESTINATION) SOURCE, greatest(SOURCE, DESTINATION) DESTINATION, DISTANCE FROM table1; It will give the desired results
@olu0mg
@olu0mg Жыл бұрын
Thanks for sharing these functions. I'm trying to think through the logic of the code to see what the output would be. I'm not sure but it looks like your code will perform 6 sets of comparisons returning 6 rows of data. How do you reduce it down to the 3 rows desired?
@Anonymous-le2zr
@Anonymous-le2zr Жыл бұрын
@@olu0mg Least function will always select the first word based on alphabetical order You may watch some videos on these functions, it is quite easy. And As we are using 'Distinct' in the query above, it will remove the duplicate records and return only 3 rows
@olu0mg
@olu0mg Жыл бұрын
@@Anonymous-le2zr Thank you! Somehow missed DISTINCT when I first read your post.
@Naveenkmr7994
@Naveenkmr7994 Жыл бұрын
desired output is hyd, delhi, pune in destination column above query gives hyd, mumbai, Pune as output
@ihezietochi6220
@ihezietochi6220 Жыл бұрын
That was also the first thing that I taught about
@MaVinkal
@MaVinkal Жыл бұрын
I guess this can be also one more approach with greatest and least function: select distinct greatest(source, destination) as source, least(source, destination) as destination, distance from src_dest_distance;
@shekhark1139
@shekhark1139 Жыл бұрын
Appreciate it. Could you tell me, is it MySQL or SQL server or others ? Thank you
@kmannavarapu
@kmannavarapu Жыл бұрын
PostgreSQL
@putopavel
@putopavel Жыл бұрын
Thank you for this alternative. I was thinking about something similar. This approach to me is more clever and avoids using the row number, which I feel is a bit hacky (even if it works)
@George-iz2ce
@George-iz2ce Жыл бұрын
A self anti semi join sounds easier to me: select * from src_dest_distance a where not exists (select 1 from src_dest_distance a where a.source=b.destination and a.destination=b.source and b.source
@extraincomesuz
@extraincomesuz Жыл бұрын
I just learned JOIN today in SQL and this was a great lesson to add to my earlier lesson. I also liked the addition of the ID column. Thank you!
@siddarthkollipara5266
@siddarthkollipara5266 Жыл бұрын
Actually @techTFQ it would be better if you add t1.dest = t2.source bcz in the sample data we don't have repetition of source but that is mostly possible to uniquely identify we could add this condition
@yaminurrahmantopiwala6207
@yaminurrahmantopiwala6207 Жыл бұрын
Also creation of ID is not necessary as text can also be compared directly, here source or destination
@aakriti_100
@aakriti_100 Жыл бұрын
@@yaminurrahmantopiwala6207 it is required, query isn’t giving required output without id column instead it’s giving whole data
@yaminurrahmantopiwala6207
@yaminurrahmantopiwala6207 Жыл бұрын
@@aakriti_100 I still disagree. You share your sample data and I will give you perfect query without redundancies
@theamigo42
@theamigo42 Жыл бұрын
It's great to see tutorials like this posted. However, it should be noted that the solution presented only works for a very specific dataset. Two potential failure cases come to mind: 1) Adding the city pair Bangalore Chennai will fail. As others have noted, the fix for this is to make the where clause check both T1.Source = T2.Dest and T1.Dest = T2.Source 2) It assumes that every city pair shows in both orders. If a city pair is only listed in one direction, it won't match on the self join. Others have mentioned using least() and greatest(). Not just an alternative, but using such functions solves both of the problems noted above: SELECT DISTINCT GREATEST(source, destination) AS source, LEAST(source, destination) AS destination, distance FROM cities; Note: tested with MariaDB, other engines may vary.
@mohitpandey6042
@mohitpandey6042 Жыл бұрын
This also works well with SQL server and Databricks SQL
@goedzo4361
@goedzo4361 Жыл бұрын
Second theamigo42. This query will not work in those 2 scenarios
@shashishekhar----
@shashishekhar---- Жыл бұрын
This has to be one of the best IT channels out there.
@dedeegal
@dedeegal Жыл бұрын
I think my solution is much simpler and therefore more understandable: select source c1, dest c2, dist from input where sourcedest
@KisaanTuber
@KisaanTuber Жыл бұрын
Again an awesome video with great explanation. Just one suggestion to the join condition. Should we include T1.source = T2.destination and T1.destination = T2.source and T.id < T2.id so that we match only the required rows. The condition T1.source = T2.destination and T.id < T2.id may join non required rows as well which is not present in your data example. Like Bangalore -> Hyderabad and Chennai -> Bangalore. Let me know your thoughts. Thanks
@mudassirasaipillai6584
@mudassirasaipillai6584 Жыл бұрын
Yes you need that condition T1.destination=t2.source and also you can replace t1.id
@shivaroyal9292
@shivaroyal9292 Жыл бұрын
@@mudassirasaipillai6584 it is not working
@SilasTalbot
@SilasTalbot Жыл бұрын
agree, the best answer sees beyond the data given to the broader nature of the data and request, and provides a solution that also is robust for handling future edge cases. This is "find all the unique trips" not just "return these 3 specific rows"... I'd add on that doing an inner join is less ideal for this same reason. It assumes that a "return trip" record will always be present to pair against. Instead, using a left join with the filter condition placed in the WHERE clause (WHERE T2.id is null) would better handle the potential situation of an unpaired entry down the road. Retain a record when no "return trip" match is found is more robust, assuming that "find all the unique trips" is the mission.
@jeffreyblack666
@jeffreyblack666 Жыл бұрын
​@@mudassirasaipillai6584 That does not avoid duplicates. That will gives the same duplicate values. For any city pair, you will have 2 rows, they will have ids of id1 and id2 which will be different, so one will be larger than the other; and they will have a different source. Then for the join in one case you will have T1.id < T2.id, and in the other case you have T1.id > T2.id. By having one of those as the condition you will only get one of the pair. But having t1.source t2.source, the condition will be true in both cases and both directions of the journey will be returned.
@sub-harmonik
@sub-harmonik Жыл бұрын
For this data set it's fine but it would be cool to incorporate the possibility of the same city showing up in a different pair. I guess you could just also add the condition that t2.source = t1.destination
@whatawonderfulworld262
@whatawonderfulworld262 Жыл бұрын
Easier: select source as destination, destination as source, distance from input union select destination, source, distance from input Explanation: union will automatically remove duplicate rows ;)
@Entertainment-nk8to
@Entertainment-nk8to Ай бұрын
it is not working
@Dangerousdaze
@Dangerousdaze Жыл бұрын
This might sound daft, but given the problem/solution set out at 2:20 why not just SELECT * FROM INPUT WHERE SOURCE IN ('Bangalore','Mumbai','Chennai');
@excelanilkumar9311
@excelanilkumar9311 Жыл бұрын
IT IS NOT WORKING IN ORACLE WITH OUT OVER() CLAUSE
@siddharthvij9087
@siddharthvij9087 2 ай бұрын
you have one of the best channels for practicing SQL queries...great going
@sahilummat8555
@sahilummat8555 Жыл бұрын
Hey My solution for the same is ;with cte as ( select *, case when source destination then source else destination end as destination1 from src_dest_distance) select source1,destination1,max(distance) from cte group by source1,destination1
@jelle2819
@jelle2819 Жыл бұрын
Instead of the group, DISTINCT can be used too.
@user-yp5tj2ce3s
@user-yp5tj2ce3s 3 ай бұрын
select distinct s,d,distance from (select *, case when source >destination then source else destination end s, case when source < destination then source else destination end d from src_dest_distance)x
@cryptograp
@cryptograp Жыл бұрын
Thanks Taufiq, I think visualization of output is necessary in such scenarios
@ganeshv791
@ganeshv791 Жыл бұрын
we can solve it through not exists operator also right. with cte as (select *, row_number() over as id from src_dest_distance) select * from cte AS t1 where not exists (select * from cte AS t2 where t1.source = t2.destination and t1.destination = t2.source and t1.id>t2.id);
@declanmcardle
@declanmcardle Жыл бұрын
You're assuming you're getting sorted pairs, can you do it with unsorted source and no ID?
@devarajanmurugesan3142
@devarajanmurugesan3142 Жыл бұрын
Looking at the output, it is a alternative row of the input table. In this instance, I believe we can divide the row number by 2. Where ever the value is not equal to zero, the result is the output table. Select * From (Select *, row_number() over () as row from input_table) t1 where row % 2 0
@user-tx3mo1ez2n
@user-tx3mo1ez2n Жыл бұрын
What if we just take the odd rows. Select * from (Select *,row_number() over() as id from table) where (id&1)=1;
@PhilAndOr
@PhilAndOr Жыл бұрын
I would not hire you if you gave that answer. It solves the problem one time only, based on assumption about the input data. What if the order of input rows was randomized?
@dsalpersenel
@dsalpersenel Жыл бұрын
Great content but please stop saying "ok"
@techTFQ
@techTFQ Жыл бұрын
Thank you and Noted 🙏🏼
@lakshaykhanna2462
@lakshaykhanna2462 6 ай бұрын
This would do the job SELECT DISTINCT IIF(source > destination, source, destination) AS source, IIF(source < destination, source, destination) AS destination, distance FROM src_dest_distance
@protapnandi9729
@protapnandi9729 Жыл бұрын
Great solution, if the source and destination are not strict, we can do simple trick- select * from src_dest_distance where source
@madavsaravanan8844
@madavsaravanan8844 Жыл бұрын
U can't use comparison operator in character column
@protapnandi9729
@protapnandi9729 Жыл бұрын
@@madavsaravanan8844 why?
@jacksparrow3595
@jacksparrow3595 Жыл бұрын
@@protapnandi9729 beacuse How can you compare Two names
@davidmoser8845
@davidmoser8845 Жыл бұрын
@@jacksparrow3595 You can certainly compare strings in SQL. Protap’s suggestion is the best solution to the stated problem. It’s extremely simple, gives correct results, and even has the benefit that the selected rows will always have the two endpoints in alphabetical order, which, if the actual source were quite long, would make the output easier to use.
@naveen0846
@naveen0846 2 ай бұрын
Can't we write source> destination instead of complex join,row_ num
@ashishsinha8125
@ashishsinha8125 Жыл бұрын
Taufiq, what if the entry is like: bangalore hyderabad 400 delhi bangalore 1200 will this condition not treat these as duplicate records ? Can we use the condition: T1.source=T2.destination and T1.destination=T2.source ?
@NaveenKumar-cn2pc
@NaveenKumar-cn2pc Жыл бұрын
Then this record delhi bangalore will be filtered out
@Winter_Soldier100
@Winter_Soldier100 7 ай бұрын
Another Simpler way to solve this : with xyz as ( select * , lead(destination) over() as LD from src_dest_distance ) Select source , destination , distance from xyz where source = LD ;
@raushansingh7530
@raushansingh7530 24 күн бұрын
with cte as ( select * , lead(destination) over(order by distance) as Lead_dest from src_dest_distance ) Select source , destination , distance from cte where source = Lead_dest ;
@HanSuVin
@HanSuVin Жыл бұрын
Thank you TFQ.... This question is asked by me. Thank you for your reply 🙏 it helps a lot to others as well.
@parveen8122
@parveen8122 Жыл бұрын
approach for specific dataset select * from src_dest_distance where source
@szabo369peter
@szabo369peter Жыл бұрын
Why not filter the original input for SOURCE < DESTINATION? That would eliminate one of the 2 records, and would be much more efficient than a self join...
@fatercoelho7476
@fatercoelho7476 Жыл бұрын
yep, although it wouldn't change the results, just make sure to use lower function on both sorce and destination to avoid headaches down the line when someone introduces "delhi" and someone's script breaks and nobody knows why
@JeanYvesHemlin
@JeanYvesHemlin Жыл бұрын
I wouldn't have done it like that but it is a quite neat solution. Thanks.
@prajaktak6475
@prajaktak6475 Жыл бұрын
Hi, My approach to this Question With cte as (Select *,ROW_NUMBER() over (order by Distance) as RN from Distance) Select Source,Destination,Distance from cte where RN %2 =1 I got it output....but is the approach right??
@surajvishwakarma4534
@surajvishwakarma4534 Жыл бұрын
But it won't match if the input table is scrambled. Like delhi to mumbai is not just below mumbai to delhi
@ananthram8062
@ananthram8062 Жыл бұрын
with cte as ( select (case when sourcedestination then source else destination end) as destination,distance from src_dest_distance ) , cte2 as ( select source,destination,distance, row_number() over(partition by source order by distance) as rnk from cte ) select * from cte2 where rnk = 1
@hiralalpatra500
@hiralalpatra500 Жыл бұрын
select s.source,s.destination,s.distance from src_dest_distance as s join src_dest_distance as s1 on s.source=s1.source and ascii(s1.source)>ascii(s.destination)
@avi8016
@avi8016 Жыл бұрын
Explanation in Excel did the whole trick with focus on ID column, thanks a lot sir
@jamesdcosta4813
@jamesdcosta4813 Жыл бұрын
Problem with MS Sql is it wont let you create row_number() without putting an order by in the over() clause. I solved like this: with CTE as ( select t.*, row_number() over( partition by distance order by distance) as [id] from travel_routes t ) select source, destination, distance from CTE where id=1 May be the CTE is overkill, but for someone who might find this useful.
@shutzzzzzz
@shutzzzzzz 4 ай бұрын
if distance is same for all records then this will not work
@amannaik1596
@amannaik1596 Жыл бұрын
This is an easier solution @techTFQ with cte as (select *, lead(destination,1,destination) over() as sc1 from src_dest_distance) select source, destination, distance from cte where source = sc1;
@Sesquipedaliofobia
@Sesquipedaliofobia 9 ай бұрын
excellent solution
@harshitsalecha221
@harshitsalecha221 3 ай бұрын
select source,destination,distance From (select *, LEAD(Source,1,Source) OVER() as Source1, LEAD(Destination,1,Destination) OVER() as Destination1 FROM src_dest_distance) as a WHERE source=destination1 AND destination=source1; Is that correct please check?
@Entertainment-nk8to
@Entertainment-nk8to Ай бұрын
I think wasy way to remove the duplicate records in the table is to use the union set operator.
@axium4067
@axium4067 Жыл бұрын
Thank you for the Video. This SQL only works if there are always two sets of records (A->B, B->A). If there is only a single source - destination pair (S->D) it will not be part of the result.
@ahmedsalamaahmed6642
@ahmedsalamaahmed6642 Жыл бұрын
I really enjoyed how you explain the win func and make easy for us to understand Great work and delivery 🎉❤
@mayankgupta7548
@mayankgupta7548 Жыл бұрын
Select source , destination, distance from table Union Select destination as souce, source as destination, distance from table ? Is it possible ?
@SP30305ATL
@SP30305ATL Жыл бұрын
This is what I came up with before I watched your solution: select src, dest, dist from cities c1 where ( select count(*) from cities c2 where c2.src = c1.dest and c2.src < c1.src) = 0;
@abhishekpamulapati
@abhishekpamulapati Жыл бұрын
So clear ! Thank you Thoufiq. Keep it coming man. More to watch and learn.
@sanu8752
@sanu8752 10 ай бұрын
select distinct greatest(source,destination),least(source,destination),distance from src_dest_distance
@user-qg1gi4ny8j
@user-qg1gi4ny8j 3 ай бұрын
I think we simply do like below. Select * from tablename Where source > destination
@sukritiguin5637
@sukritiguin5637 Жыл бұрын
Suppose there are another data also bangalore to mumbai and mumbai to bangalore. Then how join will be helofull because bangalore will be maped with two data.
@muditmishra9908
@muditmishra9908 8 ай бұрын
select t1.source, t1.destination, t1.distance from src_dest_distance t1 left join src_dest_distance t2 on t1.destination = t2.source and t1.distance = t2.distance where t1.source
@peterpeterson2460
@peterpeterson2460 Жыл бұрын
select * from src_dest_distance where source < destination;
@vivekjain2261
@vivekjain2261 Жыл бұрын
Table name assumed - Location WITH cte as (SELECT * , LAG(Source,1,0) OVER() as comp FROM Location) SELECT Source,Destination,Distance FROM cte WHERE Source NOT IN (SELECT Source FROM Location WHERE Destination=comp)
@vaishnvirani7277
@vaishnvirani7277 Жыл бұрын
We can also use lead function in Table and then comparing in with the 1st Column. That will result the Unique output.
@biswajitpradhan6121
@biswajitpradhan6121 Жыл бұрын
great explanation .. We can also run a simple query select * from src_dest_distance where source > destination
@jeffreyblack666
@jeffreyblack666 Жыл бұрын
I would prefer source < destination, that way the source comes first alphabetically. But neither will return the desired data, where it seems to want to use the first trip in the table.
@sivasankarbapathu9909
@sivasankarbapathu9909 11 ай бұрын
Write a sql query on input table is like Item, no_items Apple, 8 Potato, 4 Banana,6 Tomato,2 And Output table should be like Item, sum_item Vegitables, 8 Fruits, 14
@HarshGupta-hh6kc
@HarshGupta-hh6kc Жыл бұрын
Hi I think this can be done by using row number function and selecting the odd rows will give the desired output?
@nishantthakur144
@nishantthakur144 Жыл бұрын
I think this will only solve this particular data.
@HARSHRAJ-wz2rp
@HARSHRAJ-wz2rp 23 күн бұрын
with cte as( select src_dest_distance.*,ROW_NUMBER()OVER() as "x" FROM src_dest_distance ) select source,destination,distance from cte where x%2!=0;
@fathimafarahna2633
@fathimafarahna2633 Жыл бұрын
Fabulous
@DhirajMarathe-kb8wi
@DhirajMarathe-kb8wi 4 ай бұрын
is below query work ? select * from src_dest_distance where source > destination
@monasanthosh9208
@monasanthosh9208 3 ай бұрын
MYSQL Solution for Freshers With CTE as (Select Source,Destination,Distances, Case When Source>Destination then concat(Source,Destination) else concat(Destination,Source) end as Batch from src_dest_distances) Select Source,Destination,Distances from (Select *,row_number() over (Partition by Batch) as Rn from CTE) N Where Rn=1;
@neelbanerjee7875
@neelbanerjee7875 Жыл бұрын
Hi, could please give solution for SQL server as well.. getting issue - The function 'row_number' must have an OVER clause with ORDER BY. Also dont think this solution will work for all type of combo as below - can please check once? insert into src_dest_distance values ('Bangalore', 'Hyderbad', 400); insert into src_dest_distance values ('Hyderbad', 'Bangalore', 400); insert into src_dest_distance values ('Bangalore', 'Kolkata', 500); insert into src_dest_distance values ('Kolkata', 'Bangalore', 500); insert into src_dest_distance values ('Mumbai', 'Delhi', 400); insert into src_dest_distance values ('Kasmir', 'Mumbai', 1000); insert into src_dest_distance values ('Delhi', 'Mumbai', 400); insert into src_dest_distance values ('Mumbai', 'Kasmir', 1000); insert into src_dest_distance values ('Chennai', 'Pune', 400); insert into src_dest_distance values ('Chennai', 'HYD', 100); insert into src_dest_distance values ('Pune', 'Chennai', 400); insert into src_dest_distance values ('HYD', 'Chennai', 100);
@tftf60
@tftf60 Жыл бұрын
Select hash(destination) + hash(source) unique, first(destination), first(source), max(distance) From table Group by hash(destination) + hash(source);
@anandmathad5678
@anandmathad5678 Жыл бұрын
Very clean and crisp explanation..Thanks Taufiq
@krishna99977
@krishna99977 Жыл бұрын
Hi sir, I am trying to solve in sql server but its getting following error. Then which col should i consider for order by clause Msg 4112, Level 15, State 1, Line 147, The function 'row_number' must have an OVER clause with ORDER BY.
@techTFQ
@techTFQ Жыл бұрын
You can order by any column, the solution would still work
@krishna99977
@krishna99977 Жыл бұрын
@@techTFQ Thankyou sir🙏
@nagandranathvemishetti9247
@nagandranathvemishetti9247 Жыл бұрын
I also got the error even though after i gave order by clause i am still facing that error.
@vamshibokka9794
@vamshibokka9794 Жыл бұрын
We can concatenate both the columns and on that column we can get the duplicates rt?
@bhavanapatel9368
@bhavanapatel9368 Жыл бұрын
You are a true gem for data community ❤️
@botirno3256
@botirno3256 Жыл бұрын
thanks for your efforts Toufiq! Jazakallohu hairon.
@mah54123
@mah54123 Жыл бұрын
My senior @jinal used to explain the data in the same way how you do here...loved your presentation.
@rojalibiswal8975
@rojalibiswal8975 Жыл бұрын
Sir i hv one question. Syntax kaise likhe ..i mean basics may kuch sikhate hay or yaha pe or kuch likhte hay
@oresteszoupanos
@oresteszoupanos Жыл бұрын
I don't understand why we cannot just do: SELECT * FROM table1 WHERE Source IN('Bangalore', 'Mumbai', 'Chenai') ??? Maybe the problem definition needs to be a bit more precise? Cool video either way :-)
@Sesquipedaliofobia
@Sesquipedaliofobia 9 ай бұрын
The solution has to be dynamic in case there are other cities added to the table. It shouldn't be hardcoded.
@chandramoulis4341
@chandramoulis4341 Жыл бұрын
with cte as( select source,destination,distance,row_number() over(order by distance) as row from src_dest_distance) select source,destination,distance from cte where row in (1,3,5) This Query also gave the same result. Is that correct?
@brdrnda3805
@brdrnda3805 Жыл бұрын
No, as in the example the distances are all the same, the order is more or less random. With real distances it would be still a problem, because it is possible that two different pairs of cities have the same distance.
@nehikmetse
@nehikmetse Жыл бұрын
You should use a union which automatically removes duplicates, just inverse the destination and source while unioning. Far lighter, easier above all much much faster. I love the way bring content and training to the people but I noticed you are really record focused, try to solve issues in sets of data this will eliminate a lot of headache with growing data.
@adammacmeekin9926
@adammacmeekin9926 Жыл бұрын
Could you not in this case also do a bitwise OR of the two fields and select distinct?
@hilarylomotey7051
@hilarylomotey7051 Жыл бұрын
Best of the Best Techtfq, Awesome delivery consistency. great job ciao
@aaronbaker2186
@aaronbaker2186 Жыл бұрын
What if you have two paths to the same destination from 1 city? Here is my alternate solution: use append to combine start and destination cities, then use append to combine destination and start cities. Now you have a pair of "unique" (for a given pair of cities) identifiers. Using the same self join and row number, check if start-destination in destination-start before current row.
@brianyang1572
@brianyang1572 Жыл бұрын
I tried to run it on Oracle SQL Developer, and I got an error : "FROM keyword not found where expected" ? I also run it at Google's BigQuery, the result is "there is no data to display". Can anyone help me with that? Thanks!
@prajwalc1880
@prajwalc1880 Жыл бұрын
Hi Toufiq it would fail for this scenario CREATE TABLE DATA1( SOURCE VARCHAR(50), DESTINATION VARCHAR(50), DISTANCE INTEGER ); INSERT INTO DATA1 VALUES ('Ban', 'Hyd', 400), ('Hyd', 'Ban', 400), ('Mum', 'Del', 400), ('Del', 'Mum', 400), ('Che', 'Pun', 400), ('Pun', 'Che', 400), ('Ban', 'Del', 400), ('Del', 'Ban', 400); The output should be 4 records, but we get 6 records as output
@akhilkishore7361
@akhilkishore7361 Жыл бұрын
hi everything is excellent, but you mentioned the concept used in the title, so anyone who saw this video didn't get the opportunity to think on their own coz as the concept used is already mentioned, but you are doing a great job, to data community
@techTFQ
@techTFQ Жыл бұрын
very valid point. Hence I have just renamed the title to remove it so it help the future viewers.
@AtulSingh-be1jk
@AtulSingh-be1jk Жыл бұрын
Hi sir, Can you please make a video on how to update data of one table from another table using the merge concept. It will be very helpful for me.
@narayannayak5737
@narayannayak5737 Жыл бұрын
There is duplicate name scott 3 time, smith 2 time so.... On.... i want to update like scott1, scott2, scott3, smith1, smith2 so on..... How to update in table without copy with other table
@mrmuranga
@mrmuranga 3 ай бұрын
well laid out..thanks
@TheVaibhavdang
@TheVaibhavdang Жыл бұрын
with cte as( Select *,row_number() over(order by distance ) as rn from src_dest_distance), cte2 as (Select *,row_number() over(order by distance ) as rn from src_dest_distance) select c1.source,c1.destination,c1.distance,c1.rn from cte c1,cte2 c2 where c1.rn
@sudhanshu_tomar
@sudhanshu_tomar Жыл бұрын
We can write Select * from table Where source in ("Banglore","Mumbai","Chennai") ;
@PhilAndOr
@PhilAndOr Жыл бұрын
it's a 1-time solution, it doesn't solve the problem in the general case.
@sudhanshu_tomar
@sudhanshu_tomar Жыл бұрын
@@PhilAndOr yes bro
@arturoramirez712
@arturoramirez712 Жыл бұрын
There doesn't seem to be any order to the table and you did not provide any order to your query. You can end up with Hyderbad in row one and Bangalore in row two. Then your query would return the wrong row. Seems completely arbitrary. Maybe something was not provided to you. Otherwise just do this: select * from table where source in ('Bangalore', 'Mumbai', 'Chennai')
@SlickTim9905
@SlickTim9905 Жыл бұрын
Is there a reason for using a question like this on an interview? And if you don't get it do you still get the job?
@sandeepalagandula1677
@sandeepalagandula1677 Жыл бұрын
thank you bro.........can you do more videos on interview point of view
@rajm5349
@rajm5349 Жыл бұрын
Hi sir I know SAS, sql, python, vba, excel guide to get online work I'm unemployeee since a decade
@abhishekgowda1776
@abhishekgowda1776 Жыл бұрын
Very Nice explanation 👌 thank you 😊
@piyushpawar75
@piyushpawar75 11 ай бұрын
We can solve it by where function too and much more easier and faster
@sivacsuresh
@sivacsuresh Жыл бұрын
one doubt. what happens if data is not on this order
@rajakumarans9435
@rajakumarans9435 Жыл бұрын
please share another way of doing that?
@sravankumar1767
@sravankumar1767 Жыл бұрын
Nice explanation Taufiq 👌 👍 👏
@yaroslavpanych2067
@yaroslavpanych2067 Жыл бұрын
And now I watched full video: so you don't assume that one city can participate in 2 different pairs? Why you don't assume this? Where it was told? Also, over() without order by: why in hell you expect that data will be fed in some specific order? It might be mixed however DB engine and/or storage decides to do that. Really, this solution demonstrates only the fact that you even didn't try to solve the task.
@SwayamRath22
@SwayamRath22 Жыл бұрын
Hi Toufik, Can you make a video on "case-insensitive pattern matching in PostgreSQL". I recently faced this issue when using wildcard, unlike mySQL Postgre isn't case-insensitive. Thanks for the resources & study and practice materials you provide, they are very helpful.
@skipbalk8248
@skipbalk8248 Жыл бұрын
in postgres, you can use 'ilike' for a case-insentive version of 'like'
@nidhisingh4973
@nidhisingh4973 Жыл бұрын
This solution is not working if we have more than 1 destination with same value Ex: Source Destination. Distance Id "Pune" "Delhi" 1000. 1 "Delhi" "Pune" 1000 2 "BOM" "Delhi" 2000 3 "Delhi" "BOM" 2000 4 Here we have Delhi 2 times in destination (record 1 and 3) Output as per suggested query: "Pune" "Delhi" 1000 "Delhi" "Pune" 1000 "BOM" "Delhi" 2000 We got 2nd record as well bcz id 2< id 3 and source(Delhi)=destination(Delhi)
@sridharkeerthi3658
@sridharkeerthi3658 Жыл бұрын
Again we insert two rows 7. Bangalore to Hyderabad 400 8.Hyderabad to Bangalore 400 We have to fetch again one row is Bangalore to Hyderabad 400 , in that situation which condition we are apply.
@viratmani7011
@viratmani7011 Жыл бұрын
In that case what we can do is first select distinct rows and take that as table so you won't find any issuse
@Niece12334
@Niece12334 Жыл бұрын
Upload oracle19c software installation video sir.plz
@SANDATA764
@SANDATA764 Жыл бұрын
On linux or windows ?
@vmikrihna6299
@vmikrihna6299 Жыл бұрын
Linux...
@SANDATA764
@SANDATA764 Жыл бұрын
@@vmikrihna6299 linux version?
@vmikrihna6299
@vmikrihna6299 Жыл бұрын
Linux 64bit
@SANDATA764
@SANDATA764 Жыл бұрын
@@vmikrihna6299 kzbin.info/www/bejne/ooTEZ5ilpaajrtE
@jasongates6894
@jasongates6894 Жыл бұрын
Does this query work if we later, add another row with source Bangalore but a different destination? We are only checking that Bangalore is present in both columns, but not that they have the same corresponding source.
@sunnygoud5133
@sunnygoud5133 5 күн бұрын
It will not work if you have different source for banglore multiple joins will happen for banglore so it only works if u have distinct source and distinct destination
@PoojaYadav-jx9sl
@PoojaYadav-jx9sl Жыл бұрын
Can we represent or operator with || in SQL
@hassamulhaq7762
@hassamulhaq7762 Жыл бұрын
Helpful.
SPILLED CHOCKY MILK PRANK ON BROTHER 😂 #shorts
00:12
Savage Vlogs
Рет қаралды 44 МЛН
ISSEI & yellow girl 💛
00:33
ISSEI / いっせい
Рет қаралды 17 МЛН
Practice SQL Interview Query | Big 4 Interview Question
14:47
Solving a tricky SQL Interview Query
19:24
techTFQ
Рет қаралды 49 М.
SPILLED CHOCKY MILK PRANK ON BROTHER 😂 #shorts
00:12
Savage Vlogs
Рет қаралды 44 МЛН