<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://allangitobu.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Leksy</id>
	<title>Allan Gitobu - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://allangitobu.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Leksy"/>
	<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php/Special:Contributions/Leksy"/>
	<updated>2026-04-23T00:46:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>https://allangitobu.com/index.php?title=Main_Page&amp;diff=191</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=Main_Page&amp;diff=191"/>
		<updated>2024-04-08T21:31:37Z</updated>

		<summary type="html">&lt;p&gt;Leksy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Learning French==&lt;br /&gt;
I have decided to learn French. I do not have a specific purpose for doing that. Like many other technological inventions, that are made and then end users come up with uses for them, so is my French course. I will find a use for it. Technological inventions could also be made with a specific purpose in mind but turn out to be used in a completely different way. The inventor of the screwdriver did not know that she was making a tin can opener. I will log my struggles in learning French on a separate page and invite any help anyone could offer me.&lt;br /&gt;
&lt;br /&gt;
==A prototype is a mannequin?==&lt;br /&gt;
Anyone who has developed software for someone else will easily agree that instructions are never clear – and if they are clear, they are never adequate. That “someone else” is a customer, and as in business – “the customer is always right”. As developers, though, we must find how to play back what we understood the customer to be saying. The one way to parrot back is using the prototype. This is one way by which stakeholders could tell if they were understood while it gives them a chance to clarify their instructions.&lt;br /&gt;
XCode and Android Studio are wired to create a type of app without updating the boilerplate code. It makes it easy to drop controls on it and create a mannequin – I mean a prototype. It is possible to create some navigation, and menu bars without much code. The mannequin will show how it will all fit together.&lt;br /&gt;
&lt;br /&gt;
==ScrollView and StackView==&lt;br /&gt;
I said a StackView is much like a Home Depot packing box in a previous post. You place your controls in the StackView much like you place items in a packing box. The only thing you state regarding positioning is where the StackView sits. &lt;br /&gt;
A ScrollView is much like a floater thing in a swimming pool. We define the size of the pool and tell the float how much it can move around the pool. &lt;br /&gt;
&lt;br /&gt;
I think I am right.&lt;br /&gt;
&lt;br /&gt;
==Isn’t XCode’s StackView much like a Home Depot packing box?==&lt;br /&gt;
Autolayout in XCode can quickly come across as something difficult to understand. To a new learner, one may wonder how to use the StackView to manage the placement of controls on a screen. The problem is that we must tell a StackView where to sit and give some direction on the controls inside it on where to stay, what direction to face, how far they are to be away from one another etc. To ease the explanation, I think this view is very much like a storage box that then gets stacked away (stacked?) in a storage room. If we store tools in a storage box, those hammers and spanners do not have to know where they are in the store. They just need to know that they are in the storage box. We only must decide where the storage box gets placed, in which case we just set two dimensions (essentially). How far the package will be from the wall on the side, and how far it will be from the wall in the front. That’s it. The box is stored; hence the spanners and hammers stay put. Right?&lt;br /&gt;
&lt;br /&gt;
==Who likes computers?==&lt;br /&gt;
I'm not too fond of computers. I don’t. &lt;br /&gt;
&lt;br /&gt;
Being an IT professional, this might surprise many. I believe computers are nothing more than work tools that are supposed to enhance our productivity.  We should be able to make computers work for us and not the other way around. This is not always the case. We have heard of having been more glued and tethered to technology, such that we were freer when there was less technology. This should not be the case. Technology is intended to add to our freedom and create greater flexibility.&lt;br /&gt;
&lt;br /&gt;
[[File:network_part.jpeg|300px]]&lt;br /&gt;
&lt;br /&gt;
That said, I like what computers do and what they can do. I love to explore technology and what it is capable of doing not only to support the business but our very lives. During the COVID-19-mandated lockdown, with people working remotely and school classes running online, we appear to need computers for our very lives. We cannot live and work without them. &lt;br /&gt;
&lt;br /&gt;
My liking for what computers can do, and not a love for computers, has led me to develop a deep interest in telling computers what to do. And since computers run on software, I found myself becoming a software developer. My journey as a software developer has been guided by my interpretation of what information systems are – a science that guides the acquisition, storage, retrieval, and use of information. Computers can fall well on that food chain as they guide how we get information in whatever format it is, store it in database systems, retrieve and display it, and guide the use of it to promote life and business.&lt;br /&gt;
&lt;br /&gt;
I started in telecommunications in Kenya in the early ’90s working on Public Switched Telephone Network (PSTN) maintaining switches. At the turn of the century, I took up a job as a cellular network switching engineer where I was, and still am, fascinated by how cell phone networks carry voice and data.&lt;br /&gt;
&lt;br /&gt;
Coming to college in America I did my undergraduate in Computer Information Systems and a masters degree in Management Information Systems. That led me to the pursuit of a PhD in Information Systems and Technology at [https://cgu.edu Claremont Graduate University]. While working on these degrees I have held software development jobs with an emphasis on database development.&lt;br /&gt;
&lt;br /&gt;
[[File:cgu.jpeg|350px]]&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=Allan_Gitobu:About&amp;diff=190</id>
		<title>Allan Gitobu:About</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=Allan_Gitobu:About&amp;diff=190"/>
		<updated>2024-04-04T22:21:15Z</updated>

		<summary type="html">&lt;p&gt;Leksy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I do not like computers. I really don’t. I just like what they do and what they can do. I love to explore technology and what it is capable of doing not only to support business but our very lives. My liking for what computers can do, instead of a love for computers, has led me to develop a deep interest in telling computers what to do. And since computers run on software, I found myself becoming a software developer. My journey as a software developer has been guided by my interpretation of what information systems is – a science that guides the acquisition, storage, retrieval, and use of information. Computers can fall well on that food chain as they guide how we get information in whatever format it is, store it in database systems, retrieve and display it, and guide the use of it to promote life and business.&lt;br /&gt;
&lt;br /&gt;
I started off in telecommunications in Kenya in the early 90’s working on a public switched telephone network (PSTN) maintaining switches. At the turn of the century, I took up a job as a cellular network switching engineer where I was and still am, fascinated by how cell phone networks carry voice and data.&lt;br /&gt;
&lt;br /&gt;
Coming to college in America I did my undergraduate in Computer Information Systems and a master's degree in Management Information Systems. That led me to a pursuit of a PhD in Information Systems and Technology at Claremont Graduate University. While working on these degrees I have held software development jobs with an emphasis on database development.&lt;br /&gt;
&lt;br /&gt;
I am an information system professional bridging business and Information Technology. I have proven experience in the entire spectrum of system development demonstrated by hands-on experience in designing and implementing information systems projects that add value to businesses and serve the end-users. In addition, I am actively involved in creating computer and mobile device systems that support business operations.&lt;br /&gt;
&lt;br /&gt;
My skills center on how computer systems support the acquisition, storage, retrieval, and use of data to support business. My expertise lies in the data tasks space, including SQL, shell scripts, web, and mobile applications. For mobile apps, I develop in Android and XCode. My recent web development tasks have been on JSP. I have built systems using ColdFusion and Java. I have a working knowledge of Oracle SQL, MS Access, and anything Microsoft Office. &lt;br /&gt;
&lt;br /&gt;
[[File:graduated.jpg|350px]]&lt;br /&gt;
&lt;br /&gt;
I teach mobile app development, database management, and software engineering as a university professor. In addition, I tutor mobile app development, seeing students create functional business mobile apps.&lt;br /&gt;
&lt;br /&gt;
I have completed studies in telecommunications, and I hold graduate degrees in Information systems and Technology. My Ph.D. research centered on how Technology can support safe and appropriate use of over-the-counter drugs using mobile apps.&lt;br /&gt;
&lt;br /&gt;
Specialties: XCode, Android, SQL, ColdFusion programming, Database development, SQL Database Developer, MS Access Database Developer, Project Management.&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=Allan_Gitobu:About&amp;diff=189</id>
		<title>Allan Gitobu:About</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=Allan_Gitobu:About&amp;diff=189"/>
		<updated>2024-04-04T22:20:09Z</updated>

		<summary type="html">&lt;p&gt;Leksy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I do not like computers. I really don’t. I just like what they do and what they can do. I love to explore technology and what it is capable of doing not only to support business but our very lives. My liking for what computers can do, instead of a love for computers, has led me to develop a deep interest in telling computers what to do. And since computers run on software, I found myself becoming a software developer. My journey as a software developer has been guided by my interpretation of what information systems is – a science that guides the acquisition, storage, retrieval, and use of information. Computers can fall well on that food chain as they guide how we get information in whatever format it is, store it in database systems, retrieve and display it, and guide the use of it to promote life and business.&lt;br /&gt;
&lt;br /&gt;
I started off in telecommunications in Kenya in the early 90’s working on a public switched telephone network (PSTN) maintaining switches. At the turn of the century, I took up a job as a cellular network switching engineer where I was and still am, fascinated by how cell phone networks carry voice and data.&lt;br /&gt;
&lt;br /&gt;
Coming to college in America I did my undergraduate in Computer Information Systems and a master's degree in Management Information Systems. That led me to a pursuit of a PhD in Information Systems and Technology at Claremont Graduate University. While working on these degrees I have held software development jobs with an emphasis on database development.&lt;br /&gt;
&lt;br /&gt;
I am an information system professional bridging business and Information Technology. I have proven experience in the entire spectrum of system development demonstrated by hands-on experience in designing and implementing information systems projects that add value to businesses and serve the end-users. In addition, I am actively involved in creating computer and mobile device systems that support business operations.&lt;br /&gt;
&lt;br /&gt;
My skills center on how computer systems support the acquisition, storage, retrieval, and use of data to support business. My expertise lies in the data tasks space, including SQL, shell scripts, web, and mobile applications. For mobile apps, I develop in Android and XCode. My recent web development tasks have been on JSP. I have built systems using ColdFusion and Java. I have a working knowledge of Oracle SQL, MS Access, and anything Microsoft Office. &lt;br /&gt;
&lt;br /&gt;
[[File:cgu.jpeg|350px]]&lt;br /&gt;
&lt;br /&gt;
I teach mobile app development, database management, and software engineering as a university professor. In addition, I tutor mobile app development, seeing students create functional business mobile apps.&lt;br /&gt;
&lt;br /&gt;
I have completed studies in telecommunications, and I hold graduate degrees in Information systems and Technology. My Ph.D. research centered on how Technology can support safe and appropriate use of over-the-counter drugs using mobile apps.&lt;br /&gt;
&lt;br /&gt;
Specialties: XCode, Android, SQL, ColdFusion programming, Database development, SQL Database Developer, MS Access Database Developer, Project Management.&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=File:Graduated.jpg&amp;diff=188</id>
		<title>File:Graduated.jpg</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=File:Graduated.jpg&amp;diff=188"/>
		<updated>2024-04-04T22:14:56Z</updated>

		<summary type="html">&lt;p&gt;Leksy: Graduated at CGU&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Graduated at CGU&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=187</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=187"/>
		<updated>2024-02-08T23:38:25Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* LEFT OUTER JOIN */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT &amp;lt;br&amp;gt;&lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE,&amp;lt;br&amp;gt; &lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER,&amp;lt;br&amp;gt; &lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;,&amp;lt;br&amp;gt; &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE,&amp;lt;br&amp;gt; &lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.BDATE,&amp;lt;br&amp;gt;&lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&amp;lt;br&amp;gt;&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wong')&amp;lt;br&amp;gt;&lt;br /&gt;
UNION&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
INTERSECT&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
Results in tuples that are in one type compatible relation but not in the other.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
EXCEPT&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
MINUS&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt; &lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=186</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=186"/>
		<updated>2024-02-08T23:38:15Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* FULL OUTER JOIN */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT &amp;lt;br&amp;gt;&lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE,&amp;lt;br&amp;gt; &lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER,&amp;lt;br&amp;gt; &lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;,&amp;lt;br&amp;gt; &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE,&amp;lt;br&amp;gt; &lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.BDATE,&amp;lt;br&amp;gt;&lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&amp;lt;br&amp;gt;&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wong')&amp;lt;br&amp;gt;&lt;br /&gt;
UNION&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
INTERSECT&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
Results in tuples that are in one type compatible relation but not in the other.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
EXCEPT&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
MINUS&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt; &lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=185</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=185"/>
		<updated>2024-02-08T23:37:46Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* Order by one value ascending (implied) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT &amp;lt;br&amp;gt;&lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE,&amp;lt;br&amp;gt; &lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER,&amp;lt;br&amp;gt; &lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;,&amp;lt;br&amp;gt; &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE,&amp;lt;br&amp;gt; &lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.BDATE,&amp;lt;br&amp;gt;&lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&amp;lt;br&amp;gt;&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wong')&amp;lt;br&amp;gt;&lt;br /&gt;
UNION&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
INTERSECT&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
Results in tuples that are in one type compatible relation but not in the other.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
EXCEPT&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
MINUS&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt; &lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=184</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=184"/>
		<updated>2024-02-08T23:37:13Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* Order by one value DESC (implied) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT &amp;lt;br&amp;gt;&lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;,&amp;lt;br&amp;gt; &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE,&amp;lt;br&amp;gt; &lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.BDATE,&amp;lt;br&amp;gt;&lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&amp;lt;br&amp;gt;&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wong')&amp;lt;br&amp;gt;&lt;br /&gt;
UNION&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
INTERSECT&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
Results in tuples that are in one type compatible relation but not in the other.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
EXCEPT&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
MINUS&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt; &lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=183</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=183"/>
		<updated>2024-02-08T23:36:32Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* Order by cascaded */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT &amp;lt;br&amp;gt;&lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.BDATE,&amp;lt;br&amp;gt;&lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&amp;lt;br&amp;gt;&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wong')&amp;lt;br&amp;gt;&lt;br /&gt;
UNION&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
INTERSECT&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
Results in tuples that are in one type compatible relation but not in the other.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
EXCEPT&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
MINUS&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt; &lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=182</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=182"/>
		<updated>2024-02-08T23:35:54Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* Where subquery */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT &amp;lt;br&amp;gt;&lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.BDATE,&amp;lt;br&amp;gt;&lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&amp;lt;br&amp;gt;&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wong')&amp;lt;br&amp;gt;&lt;br /&gt;
UNION&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
INTERSECT&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
Results in tuples that are in one type compatible relation but not in the other.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
EXCEPT&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
MINUS&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt; &lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=181</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=181"/>
		<updated>2024-02-08T23:35:35Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* UNION */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT &amp;lt;br&amp;gt;&lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.BDATE,&amp;lt;br&amp;gt;&lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&amp;lt;br&amp;gt;&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wong')&amp;lt;br&amp;gt;&lt;br /&gt;
UNION&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
INTERSECT&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
Results in tuples that are in one type compatible relation but not in the other.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
EXCEPT&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
MINUS&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt; &lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=180</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=180"/>
		<updated>2024-02-08T23:35:10Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* INTERSECT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT &amp;lt;br&amp;gt;&lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.BDATE,&amp;lt;br&amp;gt;&lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&amp;lt;br&amp;gt;&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong')&lt;br /&gt;
UNION&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
INTERSECT&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
Results in tuples that are in one type compatible relation but not in the other.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
EXCEPT&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
MINUS&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt; &lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=179</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=179"/>
		<updated>2024-02-08T23:34:46Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* EXCEPT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT &amp;lt;br&amp;gt;&lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.BDATE,&amp;lt;br&amp;gt;&lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&amp;lt;br&amp;gt;&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong')&lt;br /&gt;
UNION&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
INTERSECT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
Results in tuples that are in one type compatible relation but not in the other.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
EXCEPT&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
MINUS&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt; &lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=178</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=178"/>
		<updated>2024-02-08T23:34:23Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* EXCEPT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT &amp;lt;br&amp;gt;&lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.BDATE,&amp;lt;br&amp;gt;&lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&amp;lt;br&amp;gt;&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong')&lt;br /&gt;
UNION&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
INTERSECT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
Results in tuples that are in one type compatible relation but not in the other*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
EXCEPT&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
MINUS&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt; &lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=177</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=177"/>
		<updated>2024-02-08T23:33:54Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* EXCEPT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT &amp;lt;br&amp;gt;&lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.BDATE,&amp;lt;br&amp;gt;&lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&amp;lt;br&amp;gt;&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong')&lt;br /&gt;
UNION&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
INTERSECT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
/*Results in tuples that are in one type compatible relation but not in the other*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
EXCEPT&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
MINUS&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt; &lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=176</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=176"/>
		<updated>2024-02-08T23:33:13Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* MINUS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT &amp;lt;br&amp;gt;&lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.BDATE,&amp;lt;br&amp;gt;&lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&amp;lt;br&amp;gt;&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong')&lt;br /&gt;
UNION&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
INTERSECT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
 Results in tuples that are in one type compatible relation but not in the other*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE SSN = MGR_SSN&amp;lt;br&amp;gt;&lt;br /&gt;
MINUS&amp;lt;br&amp;gt;&lt;br /&gt;
SELECT LNAME, FNAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt; &lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=175</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=175"/>
		<updated>2024-02-08T23:32:32Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* Order of operations for OR and AND */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT &amp;lt;br&amp;gt;&lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.BDATE,&amp;lt;br&amp;gt;&lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&amp;lt;br&amp;gt;&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong')&lt;br /&gt;
UNION&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
INTERSECT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
 Results in tuples that are in one type compatible relation but not in the other*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.SEX, E.SALARY, &amp;lt;br&amp;gt; &lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt; &lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=174</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=174"/>
		<updated>2024-02-08T23:31:02Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* Having Clause */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT &amp;lt;br&amp;gt;&lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.BDATE,&amp;lt;br&amp;gt;&lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&amp;lt;br&amp;gt;&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong')&lt;br /&gt;
UNION&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
INTERSECT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
 Results in tuples that are in one type compatible relation but not in the other*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=173</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=173"/>
		<updated>2024-02-08T23:30:47Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* Grouping Data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT &amp;lt;br&amp;gt;&lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.BDATE,&amp;lt;br&amp;gt;&lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&amp;lt;br&amp;gt;&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&amp;lt;br&amp;gt;&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong')&lt;br /&gt;
UNION&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
INTERSECT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
 Results in tuples that are in one type compatible relation but not in the other*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=172</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=172"/>
		<updated>2024-02-08T23:30:24Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* BETWEEN Syntax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT &amp;lt;br&amp;gt;&lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, &amp;lt;br&amp;gt;&lt;br /&gt;
E.LNAME LAST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
E.BDATE,&amp;lt;br&amp;gt;&lt;br /&gt;
E.SUPER_SSN MGR_NUMBER,&amp;lt;br&amp;gt;&lt;br /&gt;
M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong')&lt;br /&gt;
UNION&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
INTERSECT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
 Results in tuples that are in one type compatible relation but not in the other*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=171</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=171"/>
		<updated>2024-02-08T23:29:42Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* IN Syntax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT &amp;lt;br&amp;gt;&lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong')&lt;br /&gt;
UNION&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
INTERSECT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
 Results in tuples that are in one type compatible relation but not in the other*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=170</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=170"/>
		<updated>2024-02-08T23:29:32Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* Not Syntax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT &amp;lt;br&amp;gt;&lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong')&lt;br /&gt;
UNION&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
INTERSECT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
 Results in tuples that are in one type compatible relation but not in the other*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=169</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=169"/>
		<updated>2024-02-08T23:29:21Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* AND Syntax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT &amp;lt;br&amp;gt;&lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong')&lt;br /&gt;
UNION&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
INTERSECT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
 Results in tuples that are in one type compatible relation but not in the other*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=168</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=168"/>
		<updated>2024-02-08T23:29:09Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* OR Syntax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT &amp;lt;br&amp;gt;&lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong')&lt;br /&gt;
UNION&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
INTERSECT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
 Results in tuples that are in one type compatible relation but not in the other*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=167</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=167"/>
		<updated>2024-02-08T23:28:57Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* WHERE Clause */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT &amp;lt;br&amp;gt;&lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&amp;lt;br&amp;gt;&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong')&lt;br /&gt;
UNION&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
INTERSECT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
 Results in tuples that are in one type compatible relation but not in the other*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=166</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=166"/>
		<updated>2024-02-08T23:27:38Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* Order by one value ascending (implied) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT &amp;lt;br&amp;gt;&lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE BIRTH_DATE, &amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, &amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE&amp;lt;br&amp;gt;&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong')&lt;br /&gt;
UNION&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
INTERSECT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
 Results in tuples that are in one type compatible relation but not in the other*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=165</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=165"/>
		<updated>2024-02-08T23:27:05Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* Recursive join */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT &amp;lt;br&amp;gt;&lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong')&lt;br /&gt;
UNION&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
INTERSECT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
 Results in tuples that are in one type compatible relation but not in the other*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=164</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=164"/>
		<updated>2024-02-08T23:26:49Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* RIGHT OUTER JOIN */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT &amp;lt;br&amp;gt;&lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong')&lt;br /&gt;
UNION&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
INTERSECT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
 Results in tuples that are in one type compatible relation but not in the other*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=163</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=163"/>
		<updated>2024-02-08T23:26:29Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* Using JOIN ON syntax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT &amp;lt;br&amp;gt;&lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong')&lt;br /&gt;
UNION&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
INTERSECT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
 Results in tuples that are in one type compatible relation but not in the other*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=162</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=162"/>
		<updated>2024-02-08T23:26:12Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* Using the USING syntax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&amp;lt;br&amp;gt;&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
FROM DEPARTMENT &lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong')&lt;br /&gt;
UNION&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
INTERSECT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
 Results in tuples that are in one type compatible relation but not in the other*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=161</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=161"/>
		<updated>2024-02-08T23:25:43Z</updated>

		<summary type="html">&lt;p&gt;Leksy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&amp;lt;br&amp;gt;&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&amp;lt;br&amp;gt;&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &amp;lt;br&amp;gt;&lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
ADDRESS, &amp;lt;br&amp;gt;&lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&amp;lt;br&amp;gt;&lt;br /&gt;
SALARY, &amp;lt;br&amp;gt;&lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&amp;lt;br&amp;gt;&lt;br /&gt;
DNO&amp;lt;br&amp;gt;&lt;br /&gt;
FROM EMPLOYEE;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
FROM DEPARTMENT &lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong')&lt;br /&gt;
UNION&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
INTERSECT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
 Results in tuples that are in one type compatible relation but not in the other*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=160</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=160"/>
		<updated>2024-02-08T23:19:05Z</updated>

		<summary type="html">&lt;p&gt;Leksy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
==Using the USING syntax== &lt;br /&gt;
Based on values with a common name&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
==Using JOIN ON syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
FROM DEPARTMENT &lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
==LEFT OUTER JOIN== &lt;br /&gt;
All data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==RIGHT OUTER JOIN==&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==FULL OUTER JOIN== &lt;br /&gt;
&lt;br /&gt;
All data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Cross join == &lt;br /&gt;
&lt;br /&gt;
All attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
==Joining tables with an alias==&lt;br /&gt;
&lt;br /&gt;
Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
==Recursive join==&lt;br /&gt;
A table joins itself&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
==Order by one value ascending (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
==Order by one value DESC (implied)==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
==Order by cascaded==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
==WHERE Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
==OR Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
==AND Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
==Not Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
==IN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
==BETWEEN Syntax==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
==Grouping Data==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
==Having Clause==&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
==Where subquery==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
==UNION==&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong')&lt;br /&gt;
UNION&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
==INTERSECT== &lt;br /&gt;
&lt;br /&gt;
Tuples that are found in both type compatible relations.&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
INTERSECT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==EXCEPT==&lt;br /&gt;
 Results in tuples that are in one type compatible relation but not in the other*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==MINUS== &lt;br /&gt;
Tuples in one relation but not in the other&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
==Order of operations for OR and AND==&lt;br /&gt;
&lt;br /&gt;
The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=159</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=159"/>
		<updated>2024-02-08T22:45:01Z</updated>

		<summary type="html">&lt;p&gt;Leksy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Using aliases==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - example from oracle==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Computed columns - date arithmetic==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Listing distinct values==&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
==Using Natural Join - based on values with a common name*/&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
/*Using the USING syntax - based on values with a common name*/&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
/*Using JOIN ON syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
FROM DEPARTMENT &lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
/*LEFT OUTER JOIN - all data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
/*RIGHT OUTER JOIN - all data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
/*FULL OUTER JOIN - all data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
/*Cross join - all attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
/*Joining tables with an alias. Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
/*Recursive join - a table joins itself*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
/*Order by one value ascending (implied)*/&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
/*Order by one value ascending (implied)*/&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
/*Order by one value DESC (implied)*/&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
/*Order by cascaded*/&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
/*WHERE Clause*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
/*OR Syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
/*AND Syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
/*Not Syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
/*IN Syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
/*BETWEEN Syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
/*Grouping Data*/&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
/*Having Clause*/&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
/*Where subquery*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
/*UNION*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong')&lt;br /&gt;
UNION&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
/*INTERSECT - tuples that are found in both type compatible relations*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
INTERSECT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
/*EXCEPT - results in tuples that are in one type compatible relation but not in the other*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
/*MINUS - tuples in one relation but not in the other*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
/*The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=158</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=158"/>
		<updated>2024-02-08T22:44:09Z</updated>

		<summary type="html">&lt;p&gt;Leksy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==selecting all content from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
==Specifying the selected columns from a table==&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
/*Using aliases*/&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
/*Computed columns - example from oracle*/&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
/*Computed columns - date arithmetic*/&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
/*Listing distinct values*/&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
/*Using Natural Join - based on values with a common name*/&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
/*Using the USING syntax - based on values with a common name*/&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
/*Using JOIN ON syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
FROM DEPARTMENT &lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
/*LEFT OUTER JOIN - all data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
/*RIGHT OUTER JOIN - all data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
/*FULL OUTER JOIN - all data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
/*Cross join - all attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
/*Joining tables with an alias. Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
/*Recursive join - a table joins itself*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
/*Order by one value ascending (implied)*/&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
/*Order by one value ascending (implied)*/&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
/*Order by one value DESC (implied)*/&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
/*Order by cascaded*/&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
/*WHERE Clause*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
/*OR Syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
/*AND Syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
/*Not Syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
/*IN Syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
/*BETWEEN Syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
/*Grouping Data*/&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
/*Having Clause*/&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
/*Where subquery*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
/*UNION*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong')&lt;br /&gt;
UNION&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
/*INTERSECT - tuples that are found in both type compatible relations*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
INTERSECT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
/*EXCEPT - results in tuples that are in one type compatible relation but not in the other*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
/*MINUS - tuples in one relation but not in the other*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
/*The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=157</id>
		<title>SELECT queries</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=SELECT_queries&amp;diff=157"/>
		<updated>2024-02-08T22:41:55Z</updated>

		<summary type="html">&lt;p&gt;Leksy: Created page with &amp;quot;/*selecting all content from a table*/  SELECT * FROM EMPLOYEE;  /*Specifying the selected columns from a table*/  SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/*selecting all content from a table*/&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
/*Specifying the selected columns from a table*/&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
/*Using aliases*/&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, /*The FNAME column is renamed FIRST_NAME*/&lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; ,  /*Renaming with a space*/&lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE AS BIRTH_DATE, /*Renaming with the AS keyword*/&lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, /*Alias without AS keyword*/&lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR SOCIAL SECURITY NUMBER&amp;quot;, /*A long alias. It might not work in all DBMS such as oracle*/&lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
/*Computed columns - example from oracle*/&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, TRUNC((SYSDATE - BDATE) / 365) AS AGE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
/*Computed columns - date arithmetic*/&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME, BDATE BIRTH_DATE, BDATE + (65 * 365) as RETIREMENT_DATE&lt;br /&gt;
&lt;br /&gt;
FROM EMPLOYEE;&lt;br /&gt;
&lt;br /&gt;
/*Listing distinct values*/&lt;br /&gt;
&lt;br /&gt;
SELECT  DISTINCT ESSN &lt;br /&gt;
FROM WORKS_ON;&lt;br /&gt;
&lt;br /&gt;
/*Using Natural Join - based on values with a common name*/&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
&lt;br /&gt;
FROM DEPARTMENT NATURAL JOIN DEPT_LOCATIONS;&lt;br /&gt;
&lt;br /&gt;
/*Using the USING syntax - based on values with a common name*/&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
FROM DEPARTMENT JOIN DEPT_LOCATIONS USING (DNUMBER);&lt;br /&gt;
&lt;br /&gt;
/*Using JOIN ON syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT DEPARTMENT.DNAME, DEPT_LOCATIONS.DLOCATION&lt;br /&gt;
FROM DEPARTMENT &lt;br /&gt;
JOIN DEPT_LOCATIONS ON DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER;&lt;br /&gt;
&lt;br /&gt;
/*LEFT OUTER JOIN - all data on &amp;quot;left side&amp;quot; table and nulls, if no data, from right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE LEFT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
/*RIGHT OUTER JOIN - all data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE RIGHT OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
/*FULL OUTER JOIN - all data on the &amp;quot;right side&amp;quot; table and nulls, if no data, from the &amp;quot;left side&amp;quot; table AND all data on the left side table and nulls, if no data, on the right side table*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE FULL OUTER JOIN DEPENDENT ON EMPLOYEE.SSN = DEPENDENT.ESSN;&lt;br /&gt;
&lt;br /&gt;
/*Cross join - all attributes are joined in a cartesian product*/&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.SSN, EMPLOYEE.FNAME, EMPLOYEE.LNAME, DEPENDENT.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
SELECT EMPLOYEE.*,  DEPENDENT.*&lt;br /&gt;
FROM EMPLOYEE CROSS JOIN DEPENDENT;&lt;br /&gt;
&lt;br /&gt;
/*Joining tables with an alias. Here EMPLOYEE is renamed E and DEPENDENT is renamed D*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME, E.LNAME, D.DEPENDENT_NAME&lt;br /&gt;
FROM EMPLOYEE E INNER JOIN DEPENDENT D ON E.SSN = D.ESSN;&lt;br /&gt;
&lt;br /&gt;
/*Recursive join - a table joins itself*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN;&lt;br /&gt;
&lt;br /&gt;
/*Order by one value ascending (implied)*/&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME;&lt;br /&gt;
&lt;br /&gt;
/*Order by one value ascending (implied)*/&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME ASC;&lt;br /&gt;
&lt;br /&gt;
/*Order by one value DESC (implied)*/&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY LNAME DESC;&lt;br /&gt;
&lt;br /&gt;
/*Order by cascaded*/&lt;br /&gt;
&lt;br /&gt;
SELECT FNAME FIRST_NAME, &lt;br /&gt;
MINIT &amp;quot;MIDDLE INITIAL&amp;quot; , &lt;br /&gt;
LNAME &amp;quot;LAST NAME&amp;quot;, &lt;br /&gt;
SSN &amp;quot;SOCIAL SECURITY NUMBER&amp;quot;, &lt;br /&gt;
BDATE BIRTH_DATE, &lt;br /&gt;
ADDRESS, &lt;br /&gt;
SEX GENDER, &lt;br /&gt;
SALARY, &lt;br /&gt;
SUPER_SSN &amp;quot;SUPERVISOR NUMBER&amp;quot;, &lt;br /&gt;
DNO&lt;br /&gt;
FROM EMPLOYEE&lt;br /&gt;
ORDER BY FNAME, LNAME;&lt;br /&gt;
&lt;br /&gt;
/*WHERE Clause*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME = 'Wallace';&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '01-JAN-1965'; /*ORACLE syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE &amp;lt;= '1965-01-01'; /*H2 syntax*/&lt;br /&gt;
&lt;br /&gt;
/*OR Syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME = 'Wallace' OR M.LNAME = 'Borg';&lt;br /&gt;
&lt;br /&gt;
/*AND Syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.LNAME = 'English' AND M.LNAME = 'Wong';&lt;br /&gt;
&lt;br /&gt;
/*Not Syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME != 'Wong';&lt;br /&gt;
&lt;br /&gt;
/*IN Syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong','Wallace');&lt;br /&gt;
&lt;br /&gt;
/*BETWEEN Syntax*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.BDATE, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.BDATE BETWEEN '1960-01-01' AND '1969-12-31'&lt;br /&gt;
&lt;br /&gt;
/*Grouping Data*/&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
&lt;br /&gt;
/*Having Clause*/&lt;br /&gt;
&lt;br /&gt;
SELECT P.PNAME, COUNT(ESSN) AS NO_OF_EMP_ON_PROJ&lt;br /&gt;
FROM WORKS_ON WO JOIN PROJECT P ON WO.PNO = P.PNUMBER&lt;br /&gt;
JOIN EMPLOYEE E ON WO.ESSN = E.SSN&lt;br /&gt;
GROUP BY P.PNAME&lt;br /&gt;
HAVING COUNT(ESSN) &amp;lt;= 2&lt;br /&gt;
&lt;br /&gt;
/*Where subquery*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN, E.FNAME FIRST_NAME, E.LNAME LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E&lt;br /&gt;
WHERE E.SSN IN (SELECT ESSN FROM DEPENDENT);&lt;br /&gt;
&lt;br /&gt;
/*UNION*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wong')&lt;br /&gt;
UNION&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE M.LNAME in ('Wallace');&lt;br /&gt;
&lt;br /&gt;
/*INTERSECT - tuples that are found in both type compatible relations*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
INTERSECT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
/*EXCEPT - results in tuples that are in one type compatible relation but not in the other*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
/*MINUS - tuples in one relation but not in the other*/&lt;br /&gt;
&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, DEPARTMENT&lt;br /&gt;
WHERE SSN = MGR_SSN&lt;br /&gt;
EXCEPT&lt;br /&gt;
SELECT LNAME, FNAME&lt;br /&gt;
FROM EMPLOYEE, WORKS_ON&lt;br /&gt;
WHERE ESSN=SSN AND HOURS &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
/*The order of operations is important in OR and AND operands. The following queries produce different results. The first has no parenthesis, which is adjudicated first*/&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555 AND E.SALARY &amp;gt; 40000.00;&lt;br /&gt;
&lt;br /&gt;
SELECT E.SSN EMP_NUMBER, E.LNAME LAST_NAME, E.SEX, E.SALARY,  E.SUPER_SSN MGR_NUMBER, M.LNAME MANAGER_LAST_NAME&lt;br /&gt;
FROM EMPLOYEE E JOIN EMPLOYEE M ON E.SUPER_SSN = M.SSN&lt;br /&gt;
WHERE (E.SUPER_SSN = 333445555 OR E.SUPER_SSN = 888665555) AND E.SALARY &amp;gt; 40000.00;&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=Algorithms&amp;diff=156</id>
		<title>Algorithms</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=Algorithms&amp;diff=156"/>
		<updated>2022-11-13T15:13:32Z</updated>

		<summary type="html">&lt;p&gt;Leksy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below is a collection of algorithms. The title of the algorithm describes (as much as possible) what the algorithm does.&lt;br /&gt;
&lt;br /&gt;
==Java Graph Implementation with Search Methods==&lt;br /&gt;
&lt;br /&gt;
The algorithm below implements the organization chart below:&lt;br /&gt;
&lt;br /&gt;
Jimbo Jones is employee id 38 and is the President.&lt;br /&gt;
&lt;br /&gt;
Mike McCobb, id 39, is a VP and reports to Jimbo Jones.&lt;br /&gt;
&lt;br /&gt;
Elda Two, id 43, is a VP and reports to Jimbo Jones.&lt;br /&gt;
&lt;br /&gt;
Simon Sneath, id 48, is a VP and reports to Jimbo Jones.&lt;br /&gt;
&lt;br /&gt;
Tim Scott, id 56, is a Manager and reports to Mike McCobb.&lt;br /&gt;
&lt;br /&gt;
Bob Tilman, id 58, is a Manager and reports to Mike McCobb.&lt;br /&gt;
&lt;br /&gt;
Andrew Cole, id 78, is an Analyst and reports to Tim Scott.&lt;br /&gt;
&lt;br /&gt;
Matt Lemon, id 83, is an Analyst and reports to Tim Scott.&lt;br /&gt;
&lt;br /&gt;
Chris Lock, id 88, is an Analyst and reports to Tim Scott.&lt;br /&gt;
&lt;br /&gt;
Agnes White, id 71, is an Accountant and reports to Bob Tilman.&lt;br /&gt;
&lt;br /&gt;
George Mills, id 61, is a Manager and reports to Elda Two.&lt;br /&gt;
&lt;br /&gt;
Thomas Wells, id 59, is a Manager and reports to Elda Two.&lt;br /&gt;
&lt;br /&gt;
Zip Two, id 63, is Manager and also reports to Elda Two.&lt;br /&gt;
&lt;br /&gt;
Rasta Him, id 73, is a Technician and reports to Thomas Wells.&lt;br /&gt;
&lt;br /&gt;
Claire Collins, id 89, is a Supervisor and reports to George Mills.&lt;br /&gt;
&lt;br /&gt;
Jim Four, id 95, is a Receptionist and reports to Claire Collins.&lt;br /&gt;
&lt;br /&gt;
Tom Flat, id 104, is a Receptionist who reports to Claire Collins.&lt;br /&gt;
&lt;br /&gt;
Grace Marks, id 64, is a Manager and reports to Simon Sneath.&lt;br /&gt;
&lt;br /&gt;
Dan Four, id 68, is a Manager and reports to Simon Sneath.&lt;br /&gt;
&lt;br /&gt;
Shad Fifty, id 117, is in Security and reports to Dan Four.&lt;br /&gt;
&lt;br /&gt;
Tall Nephew, id 108, is in Legal and reports to Grace Marks.&lt;br /&gt;
&lt;br /&gt;
Short Nephew, id 109, is in Legal and reports to Grace Marks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class Chart {&lt;br /&gt;
    static class Employee {&lt;br /&gt;
        int id;&lt;br /&gt;
        String firstName;&lt;br /&gt;
        String lastName;&lt;br /&gt;
        String jobTitle;&lt;br /&gt;
        boolean mapped;&lt;br /&gt;
&lt;br /&gt;
        Employee(int id, String fn, String ln, String jt) {&lt;br /&gt;
            this.id = id;&lt;br /&gt;
            this.jobTitle = jt;&lt;br /&gt;
            this.firstName = fn;&lt;br /&gt;
            this.lastName = ln;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void map() {&lt;br /&gt;
            mapped = true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void unmap() {&lt;br /&gt;
            mapped = false;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private final HashMap&amp;lt;Employee, LinkedList&amp;lt;Employee&amp;gt;&amp;gt; assignment;&lt;br /&gt;
&lt;br /&gt;
    public Chart(boolean directed) {&lt;br /&gt;
        assignment = new HashMap&amp;lt;&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdgeHelper(Employee a, Employee b) {&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; e = assignment.get(a);&lt;br /&gt;
        if (e != null) {&lt;br /&gt;
            assignment.remove(b);&lt;br /&gt;
        } else&lt;br /&gt;
            e = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        e.add(b);&lt;br /&gt;
        assignment.put(a, e);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdge(Employee boss, Employee subordinate) {&lt;br /&gt;
        if (!assignment.containsKey(boss))&lt;br /&gt;
            assignment.put(boss, null);&lt;br /&gt;
        if (!assignment.containsKey(subordinate))&lt;br /&gt;
            assignment.put(subordinate, null);&lt;br /&gt;
        addEdgeHelper(boss, subordinate);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void depthFirstSearch(Employee employee) {&lt;br /&gt;
        employee.map();&lt;br /&gt;
        System.out.println(employee.firstName + &amp;quot; &amp;quot; + employee.lastName + &amp;quot; is a &amp;quot; + employee.jobTitle);&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; neighbors = assignment.get(employee);&lt;br /&gt;
        if (neighbors == null)&lt;br /&gt;
            return;&lt;br /&gt;
        for (Employee e : neighbors) {&lt;br /&gt;
            if (!e.mapped)&lt;br /&gt;
                depthFirstSearch(e);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void breadthFirstSearch(Employee employee) {&lt;br /&gt;
        /*Check if target item is null - if so quit*/&lt;br /&gt;
        if (employee == null)&lt;br /&gt;
            return;&lt;br /&gt;
        /*Declare a queue using LinkedList and add the target item*/&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        queue.add(employee);&lt;br /&gt;
        /*As long as the queue has data get the first in item .removeFirst*/&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Employee currentFirst = queue.removeFirst();&lt;br /&gt;
            /*If visited move on*/&lt;br /&gt;
            if (currentFirst.mapped) {&lt;br /&gt;
                continue;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*else visit it and print it*/&lt;br /&gt;
                currentFirst.map();&lt;br /&gt;
                System.out.println(currentFirst.id + &amp;quot;: &amp;quot; + currentFirst.firstName + &amp;quot; &amp;quot; + currentFirst.lastName + &amp;quot; - &amp;quot; + currentFirst.jobTitle);&lt;br /&gt;
            }&lt;br /&gt;
            /*Find neighbors of the current item*/&lt;br /&gt;
            LinkedList&amp;lt;Employee&amp;gt; allNeighbors = assignment.get(currentFirst);&lt;br /&gt;
            /*If there are none move on*/&lt;br /&gt;
            if (allNeighbors == null)&lt;br /&gt;
                continue;&lt;br /&gt;
            /*else if there are some and not visited, add them to the queue and the process starts over*/&lt;br /&gt;
            for (Employee e : allNeighbors) {&lt;br /&gt;
                if (!e.mapped)&lt;br /&gt;
                    queue.add(e);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void resetMapping() {&lt;br /&gt;
        for (Employee e : assignment.keySet()) {&lt;br /&gt;
            e.unmap();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Employee a = new Employee(38, &amp;quot;Jimbo&amp;quot;, &amp;quot;Jones&amp;quot;, &amp;quot;President&amp;quot;);&lt;br /&gt;
        Employee b = new Employee(39, &amp;quot;Mike&amp;quot;, &amp;quot;McCobb&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee c = new Employee(43, &amp;quot;Elda&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee d = new Employee(48, &amp;quot;Simon&amp;quot;, &amp;quot;Sneeth&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee e = new Employee(56, &amp;quot;Tim&amp;quot;, &amp;quot;Scott&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee f = new Employee(58, &amp;quot;Bob&amp;quot;, &amp;quot;Tilman&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee g = new Employee(78, &amp;quot;Andrew&amp;quot;, &amp;quot;Cole&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee h = new Employee(83, &amp;quot;Matt&amp;quot;, &amp;quot;Lemon&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee i = new Employee(88, &amp;quot;Chris&amp;quot;, &amp;quot;Lock&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee j = new Employee(71, &amp;quot;Agnes&amp;quot;, &amp;quot;White&amp;quot;, &amp;quot;Accountant&amp;quot;);&lt;br /&gt;
        Employee k = new Employee(61, &amp;quot;George&amp;quot;, &amp;quot;Mills&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee l = new Employee(59, &amp;quot;Thomas&amp;quot;, &amp;quot;Wells&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee m = new Employee(63, &amp;quot;Zip&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee n = new Employee(73, &amp;quot;Rasta&amp;quot;, &amp;quot;Him&amp;quot;, &amp;quot;Technician&amp;quot;);&lt;br /&gt;
        Employee o = new Employee(89, &amp;quot;Claire&amp;quot;, &amp;quot;Collins&amp;quot;, &amp;quot;Supervisor&amp;quot;);&lt;br /&gt;
        Employee p = new Employee(95, &amp;quot;Jim&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee q = new Employee(104, &amp;quot;Tom&amp;quot;, &amp;quot;Flat&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee r = new Employee(64, &amp;quot;Grace&amp;quot;, &amp;quot;Marks&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee s = new Employee(68, &amp;quot;Dan&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee t = new Employee(117, &amp;quot;Shad&amp;quot;, &amp;quot;Fifty&amp;quot;, &amp;quot;Security&amp;quot;);&lt;br /&gt;
        Employee u = new Employee(108, &amp;quot;Tall&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
        Employee v = new Employee(109, &amp;quot;Short&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        Chart chart = new Chart(true);&lt;br /&gt;
        chart.addEdge(a, b);&lt;br /&gt;
        chart.addEdge(a, c);&lt;br /&gt;
        chart.addEdge(a, d);&lt;br /&gt;
        chart.addEdge(b, e);&lt;br /&gt;
        chart.addEdge(b, f);&lt;br /&gt;
        chart.addEdge(e, g);&lt;br /&gt;
        chart.addEdge(e, h);&lt;br /&gt;
        chart.addEdge(e, i);&lt;br /&gt;
        chart.addEdge(f, j);&lt;br /&gt;
        chart.addEdge(c, k);&lt;br /&gt;
        chart.addEdge(c, l);&lt;br /&gt;
        chart.addEdge(c, m);&lt;br /&gt;
        chart.addEdge(l, n);&lt;br /&gt;
        chart.addEdge(k, o);&lt;br /&gt;
        chart.addEdge(o, p);&lt;br /&gt;
        chart.addEdge(o, q);&lt;br /&gt;
        chart.addEdge(d, r);&lt;br /&gt;
        chart.addEdge(d, s);&lt;br /&gt;
        chart.addEdge(s, t);&lt;br /&gt;
        chart.addEdge(r, u);&lt;br /&gt;
        chart.addEdge(r, v);&lt;br /&gt;
        //System.out.println(a.firstName + &amp;quot; &amp;quot; + a.lastName + &amp;quot; &amp;quot; + a.jobTitle + &amp;quot; &amp;quot; + a.id);&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        //chart.depthFirstSearch(k);&lt;br /&gt;
&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        chart.breadthFirstSearch(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Find missing number==&lt;br /&gt;
You are given an array of positive numbers from 1 to n, such that all numbers from 1 to n are present except one number x. You have to find x. The input array is not sorted. Look at the below array and give it a try before checking the solution.&lt;br /&gt;
&lt;br /&gt;
The missing number = a sum of the provided array subtracted from a sum of indices + 2&lt;br /&gt;
example 1, 2, 4 missing is 3 = (1 +2 +3+4) - (1 +2+4)&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
public class MissingNum {&lt;br /&gt;
    public static int findMissing(List&amp;lt;Integer&amp;gt; l) {&lt;br /&gt;
        int tot_prov = 0;&lt;br /&gt;
        for (Integer integer : l) {&lt;br /&gt;
            tot_prov += integer;&lt;br /&gt;
        }&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; k = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;
        int tot_req = 0;&lt;br /&gt;
        for (int i = 0; i &amp;lt; l.size() + 2; i++) {&lt;br /&gt;
            k.add(i);&lt;br /&gt;
            tot_req += k.get(i);&lt;br /&gt;
        }&lt;br /&gt;
        return tot_req - tot_prov;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; g = Arrays.asList(8, 5, 3, 2, 4, 1, 7);&lt;br /&gt;
        System.out.println(&amp;quot;The missing number is &amp;quot; + findMissing(g));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Mergesort==&lt;br /&gt;
public class MergeSort {&lt;br /&gt;
&lt;br /&gt;
    private static Comparable[] aux;&lt;br /&gt;
&lt;br /&gt;
    public static void sort(Comparable[] a) {&lt;br /&gt;
        aux = new Comparable[a.length];&lt;br /&gt;
        sort(a, 0, a.length - 1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void merge(Comparable[] a, int lo, int mid, int hi) {&lt;br /&gt;
        assert isSorted(a, lo, mid);&lt;br /&gt;
        assert isSorted(a, mid + 1, hi);&lt;br /&gt;
        //copy for [] a to [] aux&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            aux[k] = a[k];&lt;br /&gt;
        }&lt;br /&gt;
        // the merging process&lt;br /&gt;
        // i is the first index of the first half of the array&lt;br /&gt;
        // j is the first index of the second half of the array&lt;br /&gt;
        int i = lo, j = mid + 1;&lt;br /&gt;
&lt;br /&gt;
        // for every value of k - the indices of [] a&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            /*Left half exhausted take from the right*/&lt;br /&gt;
            if (i &amp;gt; mid)&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Right half exhausted take from the left*/&lt;br /&gt;
            else if (j &amp;gt; hi)&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
                /*Current key on the right less than current key on the left take from the right*/&lt;br /&gt;
            else if (less(aux[j], aux[i]))&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Current key on the right greater than current key on the left take from the left */&lt;br /&gt;
            else&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
        }&lt;br /&gt;
        assert isSorted(a, lo, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void sort(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        if (hi &amp;lt;= lo)&lt;br /&gt;
            return;&lt;br /&gt;
        int mid = lo + (hi - lo) / 2;&lt;br /&gt;
        sort(a, lo, mid);&lt;br /&gt;
        sort(a, mid + 1, hi);&lt;br /&gt;
        merge(a, lo, mid, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean less(Comparable v, Comparable w) {&lt;br /&gt;
        return v.compareTo(w) &amp;lt; 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean isSorted(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        for (int i = lo + 1; i &amp;lt;= hi; i++)&lt;br /&gt;
            if (less(a[i], a[i - 1])) return false;&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void show(Comparable[] a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length; i++) {&lt;br /&gt;
            //System.out.print(a[i]);&lt;br /&gt;
            System.out.println(a[i]);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        // Comparable[] a = {&amp;quot;E&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;A&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;T&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
        Comparable[] aa = {&amp;quot;A&amp;quot;, &amp;quot;X&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;};&lt;br /&gt;
        Comparable[] bb = {&amp;quot;H&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;J&amp;quot;, &amp;quot;Y&amp;quot;, &amp;quot;Z&amp;quot;};&lt;br /&gt;
        /*Merge the two comparable arrays*/&lt;br /&gt;
        Comparable[] a = new Comparable[aa.length + bb.length];&lt;br /&gt;
        System.arraycopy(aa, 0, a, 0, aa.length);&lt;br /&gt;
        System.arraycopy(bb, 0, a, aa.length, bb.length);&lt;br /&gt;
&lt;br /&gt;
        MergeSort.sort(a);&lt;br /&gt;
        show(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Binary Search==&lt;br /&gt;
public class BinarySearch {&lt;br /&gt;
    public static int find(int[] arr, int target) {&lt;br /&gt;
        int left = 0;&lt;br /&gt;
        int right = arr.length - 1;&lt;br /&gt;
        while (left &amp;lt;= right) {&lt;br /&gt;
            int mid = left + (right - left);&lt;br /&gt;
            if (arr[mid] == target)&lt;br /&gt;
                return mid;&lt;br /&gt;
            if (arr[mid] &amp;lt; target) {&lt;br /&gt;
                left = mid + 1;&lt;br /&gt;
            } else {&lt;br /&gt;
                right = mid - 1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return -1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        int[] f = {1, 10, 20, 47, 59, 63, 75, 88, 99, 107, 120, 133, 155, 162, 176, 188, 199, 200, 210, 222, 223};&lt;br /&gt;
        int t = 162;&lt;br /&gt;
        System.out.println(find(f, t));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Validate Binary Search Tree==&lt;br /&gt;
&lt;br /&gt;
Given a Binary Tree, figure out whether it’s a Binary Search Tree. In a binary search tree, each node’s key value is smaller than the key value of all nodes in the right subtree, and is greater than the key values of all nodes in the left subtree. Below is an example of a binary tree that is a valid BST.&lt;br /&gt;
&lt;br /&gt;
public class BinarySearchTree {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int value) {&lt;br /&gt;
            this.value = value;&lt;br /&gt;
            this.left = null;&lt;br /&gt;
            this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public BinarySearchTree() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    public boolean isbst(Node root, Node l, Node r) {&lt;br /&gt;
        if (root == null)&lt;br /&gt;
            return true;&lt;br /&gt;
        if (l != null &amp;amp;&amp;amp; l.value &amp;gt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        if (r != null &amp;amp;&amp;amp; r.value &amp;lt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        return isbst(root.left, l, root) &amp;amp;&amp;amp; isbst(root.right, root, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        BinarySearchTree bt = new BinarySearchTree();&lt;br /&gt;
        bt.root = new Node(10);&lt;br /&gt;
        bt.root.left = new Node(5);&lt;br /&gt;
        bt.root.right = new Node(15);&lt;br /&gt;
        bt.root.left.left = new Node(4);&lt;br /&gt;
        bt.root.left.right = new Node(7);&lt;br /&gt;
        bt.root.right.left = new Node(13);&lt;br /&gt;
        bt.root.right.right = new Node(26);&lt;br /&gt;
        if (bt.isbst(bt.root, null, null))&lt;br /&gt;
            System.out.println(&amp;quot;Is a BST&amp;quot;);&lt;br /&gt;
        else&lt;br /&gt;
            System.out.println(&amp;quot;Is not a BST&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Determine if two integers add up to given number==&lt;br /&gt;
Given an array of integers and a value, determine if there are any two integers in the array whose sum is equal to the given value. Return true if the sum exists and return false if it does not. Consider this array and the target sums:&lt;br /&gt;
public class SumOfTwo {&lt;br /&gt;
        public static void main(String args[]) {&lt;br /&gt;
            Set&amp;lt;Integer&amp;gt; set = new HashSet&amp;lt;&amp;gt;(); /*Populate this Set with target values*/&lt;br /&gt;
            /*Array of target values*/&lt;br /&gt;
            int[] g = {5, 6, 8, 39, 9, 11, 20, 59, 10, 1};&lt;br /&gt;
            /*Insert the arrays values in the set*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                set.add(g[i]);&lt;br /&gt;
            }&lt;br /&gt;
            /*Set a target number to check for*/&lt;br /&gt;
            int y = 20;&lt;br /&gt;
            /*If there are a set of numbers that would add up, increment this counter*/&lt;br /&gt;
            int counter = 0;&lt;br /&gt;
            /*Pick up a number in the set by turns and assign it to x*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                int x = g[i];&lt;br /&gt;
                /*Check to see if the set contains target minus found number.*/&lt;br /&gt;
                if (set.contains(y - x)) { //if this is true&lt;br /&gt;
                    /*If so, increment the counter by 1*/&lt;br /&gt;
                    counter += 1;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (counter &amp;gt; 0) { /*Some numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            } else { /*No numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are no sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Merge two sorted lists==&lt;br /&gt;
Given two sorted linked lists, merge them so that the resulting linked list is also sorted. Consider two sorted linked lists and the merged list below them as an example.&lt;br /&gt;
import java.util.Stack;&lt;br /&gt;
/*This code merges two ordered lists into one keeping their increasing order&lt;br /&gt;
 * the lists used for testing are in the main function*/&lt;br /&gt;
public class MergeLists {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int data;&lt;br /&gt;
        Node next;&lt;br /&gt;
        Node(int z) {&lt;br /&gt;
            this.data = z;&lt;br /&gt;
            next = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads the values of a list and loads them on a Stack, then reads from the stack*/&lt;br /&gt;
    public static void loadInStack(Node f) {&lt;br /&gt;
        Stack&amp;lt;Integer&amp;gt; pack = new Stack&amp;lt;&amp;gt;();&lt;br /&gt;
        if (f == null)&lt;br /&gt;
            return;&lt;br /&gt;
        pack.push(f.data);&lt;br /&gt;
        loadInStack(f.next);&lt;br /&gt;
        System.out.println(pack);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function duplicates the provided list into another one*/&lt;br /&gt;
    public static void duplicateList(Node m) {&lt;br /&gt;
        Node hold = new Node(-1);&lt;br /&gt;
        if (m == null)&lt;br /&gt;
            return;&lt;br /&gt;
        hold.data = m.data;&lt;br /&gt;
        duplicateList(m.next);&lt;br /&gt;
        System.out.println(hold.data);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads from two lists picking the lesser of*/&lt;br /&gt;
    /*It takes in two lists as variables a and b*/&lt;br /&gt;
    public static void pickTwo(Node a, Node b) {&lt;br /&gt;
        /*This is a dummy list initialized with -1*/&lt;br /&gt;
        Node dummyList = new Node(-1);&lt;br /&gt;
        while (a != null &amp;amp;&amp;amp; b != null) {&lt;br /&gt;
            if (a.data &amp;lt;= b.data) {&lt;br /&gt;
                /*populate the dummy list from a, if smaller*/&lt;br /&gt;
                dummyList.data = a.data;&lt;br /&gt;
                /*Increment a*/&lt;br /&gt;
                a = a.next;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*populate the dummy list from b, if smaller*/&lt;br /&gt;
                dummyList.data = b.data;&lt;br /&gt;
                /*Increment b*/&lt;br /&gt;
                b = b.next;&lt;br /&gt;
            }&lt;br /&gt;
            /*Print when done*/&lt;br /&gt;
            System.out.print(dummyList.data + &amp;quot; -&amp;gt; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Node f = new Node(2);&lt;br /&gt;
        Node g = new Node(7);&lt;br /&gt;
        Node h = new Node(8);&lt;br /&gt;
        Node i = new Node(11);&lt;br /&gt;
&lt;br /&gt;
        f.next = g;&lt;br /&gt;
        g.next = h;&lt;br /&gt;
        h.next = i;&lt;br /&gt;
&lt;br /&gt;
        //printNodes(f);&lt;br /&gt;
&lt;br /&gt;
        Node k = new Node(4);&lt;br /&gt;
        Node l = new Node(6);&lt;br /&gt;
        Node m = new Node(9);&lt;br /&gt;
        Node n = new Node(10);&lt;br /&gt;
        Node o = new Node(12);&lt;br /&gt;
&lt;br /&gt;
        k.next = l;&lt;br /&gt;
        l.next = m;&lt;br /&gt;
        m.next = n;&lt;br /&gt;
        n.next = o;&lt;br /&gt;
&lt;br /&gt;
        //loadInStack(f);&lt;br /&gt;
        //duplicateList(k);&lt;br /&gt;
        pickTwo(f, k);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Reverse String==&lt;br /&gt;
&lt;br /&gt;
Reverse the order of words in a given sentence (an array of characters).&lt;br /&gt;
&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class ReverseString {&lt;br /&gt;
    public static void lizy(String[] curr) {&lt;br /&gt;
        LinkedList&amp;lt;String&amp;gt; y = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        for (int g = 0; g &amp;lt;= curr.length - 1; g++) {&lt;br /&gt;
            y.add(curr[g]);&lt;br /&gt;
        }&lt;br /&gt;
        Iterator i = y.descendingIterator();&lt;br /&gt;
        while (i.hasNext()) {&lt;br /&gt;
            System.out.print(i.next() + &amp;quot; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        String given = &amp;quot;Hello World&amp;quot;;&lt;br /&gt;
        String[] given_array = given.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String lineOfCurrencies = &amp;quot;USD JPY AUD SGD HKD CAD CHF GBP EURO INR&amp;quot;;&lt;br /&gt;
        String multispace = &amp;quot;Kenya    Uganda Tanzania   Burundi     Rwanda&amp;quot;;&lt;br /&gt;
        String[] currencies = lineOfCurrencies.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String[] ms = multispace.split(&amp;quot;\\s+&amp;quot;);&lt;br /&gt;
        ReverseString.lizy(given_array);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Level Order Traversal of Binary Tree==&lt;br /&gt;
&lt;br /&gt;
Given the root of a binary tree, display the node values at each level. Node values for all levels should be displayed on separate lines. Let’s take a look at the below binary tree.&lt;br /&gt;
&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class Lot {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int v) {&lt;br /&gt;
            this.value = v;&lt;br /&gt;
            this.left = this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public Lot() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    void lot() {&lt;br /&gt;
        LinkedList&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        //Queue&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;Node&amp;gt;();&lt;br /&gt;
        queue.add(root);&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Node tempNode = queue.removeFirst();&lt;br /&gt;
            //Node tempNode = queue.poll();&lt;br /&gt;
            System.out.print(tempNode.value + &amp;quot; &amp;quot;);&lt;br /&gt;
            if (tempNode.left != null)&lt;br /&gt;
                queue.add(tempNode.left);&lt;br /&gt;
            if (tempNode.right != null)&lt;br /&gt;
                queue.add(tempNode.right);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Lot l = new Lot();&lt;br /&gt;
        l.root = new Node(100);&lt;br /&gt;
        l.root.left = new Node(50);&lt;br /&gt;
        l.root.right = new Node(200);&lt;br /&gt;
        l.root.left.left = new Node(25);&lt;br /&gt;
        l.root.left.right = new Node(75);&lt;br /&gt;
        l.root.right.right = new Node(350);&lt;br /&gt;
        System.out.println(&amp;quot;Level order traversal is as follows: &amp;quot;);&lt;br /&gt;
        l.lot();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==String Segmentation==&lt;br /&gt;
You are given a dictionary of words and a large input string. You have to find out whether the input string can be completely segmented into the words of a given dictionary. The following two examples elaborate on the problem further.&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
&lt;br /&gt;
public class Dictionary {&lt;br /&gt;
    boolean pair(Set&amp;lt;String&amp;gt; dictionary, String a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length(); i++) {&lt;br /&gt;
            String first_word = a.substring(0, i);&lt;br /&gt;
            if (dictionary.contains(first_word)) {&lt;br /&gt;
                String second_word = a.substring(i);&lt;br /&gt;
                if (dictionary.contains(second_word) || pair(dictionary, second_word)) {&lt;br /&gt;
                    return true;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        Dictionary dictionary = new Dictionary();&lt;br /&gt;
        Set&amp;lt;String&amp;gt; dict = new HashSet&amp;lt;&amp;gt;();&lt;br /&gt;
        dict.add(&amp;quot;geo&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;science&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;politics&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;thermal&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;physical&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;mis&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;under&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;stand&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;understand&amp;quot;);&lt;br /&gt;
        String word = &amp;quot;misunderstand&amp;quot;;&lt;br /&gt;
        if (dictionary.pair(dict, word)) {&lt;br /&gt;
            System.out.println(&amp;quot;The test word &amp;quot; + word + &amp;quot; fits in two words in the dictionary&amp;quot;);&lt;br /&gt;
        } else {&lt;br /&gt;
            System.out.println(&amp;quot;The test word &amp;quot; + word + &amp;quot; does not make dictionary words&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Computing number combinations==&lt;br /&gt;
Suppose we have coin denominations of [1, 2, 5] and the total amount is 7. We can make changes in the following 6 ways:&lt;br /&gt;
&lt;br /&gt;
public class Combinations {&lt;br /&gt;
    static int changeOptions(int[] denominations, int amount) {&lt;br /&gt;
        int[] solution = new int[amount + 1];&lt;br /&gt;
        solution[0] = 1;&lt;br /&gt;
        for (int x : denominations) {&lt;br /&gt;
            for (int i = x; i &amp;lt; (amount + 1); ++i) {&lt;br /&gt;
                solution[i] += solution[i - x];&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return solution[solution.length - 1];&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        int[] denominations = new int[]{1, 2, 5, 10};&lt;br /&gt;
        int amount = 5;&lt;br /&gt;
        int result = changeOptions(denominations, amount);&lt;br /&gt;
        System.out.println(&amp;quot;There are &amp;quot; + result + &amp;quot; combinations in forming &amp;quot; + amount + &amp;quot; given the factors below: &amp;quot;);&lt;br /&gt;
        for (int denomination : denominations) {&lt;br /&gt;
            System.out.println(denomination);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Sum of two numbers==&lt;br /&gt;
Are there two numbers in the provided set that add up to the given number?&lt;br /&gt;
===Brute force method===&lt;br /&gt;
&lt;br /&gt;
We start with a brute force method that checks every number. Big 0(n).&lt;br /&gt;
&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
&lt;br /&gt;
public class SumOfTwo {&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Set&amp;lt;Integer&amp;gt; set = new HashSet&amp;lt;&amp;gt;(); /*Populate this Set with target values*/&lt;br /&gt;
        /*Array of target values*/&lt;br /&gt;
        int[] g = {5, 6, 8, 39, 9, 11, 20, 59, 10, 1};&lt;br /&gt;
        /*Insert the arrays values in the set*/&lt;br /&gt;
        for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
            set.add(g[i]);&lt;br /&gt;
        }&lt;br /&gt;
        /*Set a target number to check for*/&lt;br /&gt;
        int y = 20;&lt;br /&gt;
        /*If there are a set of numbers that would add up, increment this counter*/&lt;br /&gt;
        int counter = 0;&lt;br /&gt;
        /*Pick up a number in the set by turns and assign it to x*/&lt;br /&gt;
        for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
            int x = g[i];&lt;br /&gt;
            /*Check to see if the set contains target minus found number.*/&lt;br /&gt;
            if (set.contains(y - x)) { //if this is true&lt;br /&gt;
                /*If so, increment the counter by 1*/&lt;br /&gt;
                counter += 1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        if (counter &amp;gt; 0) { /*Some numbers add up*/&lt;br /&gt;
            System.out.println(&amp;quot;There are sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
        } else { /*No numbers add up*/&lt;br /&gt;
            System.out.println(&amp;quot;There are no sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
===Two pointer method===&lt;br /&gt;
This method uses a function to find the two numbers then makes a determination&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
&lt;br /&gt;
public class Addends {&lt;br /&gt;
    static void doTwoNumbersAdd(int[] a, int b) {&lt;br /&gt;
        int[] z = findAddingNumbers(a, b);&lt;br /&gt;
        if (z.length &amp;gt; 0) {&lt;br /&gt;
            System.out.println(&amp;quot;There are two numbers that add up to &amp;quot; + b);&lt;br /&gt;
        } else {&lt;br /&gt;
            System.out.println(&amp;quot;There are no numbers that add up to &amp;quot; + b);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    static int[] findAddingNumbers(int[] arr, int t) {&lt;br /&gt;
        Arrays.sort(arr);&lt;br /&gt;
        int lo = 0;&lt;br /&gt;
        int hi = (arr.length - 1);&lt;br /&gt;
        while (lo &amp;lt; hi) {&lt;br /&gt;
            if (arr[lo] + arr[hi] == t) {&lt;br /&gt;
                return new int[]{arr[lo], arr[hi]};&lt;br /&gt;
            } else if (arr[lo] + arr[hi] &amp;lt; t) {&lt;br /&gt;
                lo++;&lt;br /&gt;
            } else {&lt;br /&gt;
                hi--;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return new int[]{};&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        int[] provided = {8, 5, 7, 3, 2, 9, 6, 4};&lt;br /&gt;
        int target = 12;&lt;br /&gt;
        System.out.println(&amp;quot;These two numbers that add up to &amp;quot; + target + &amp;quot; are &amp;quot; + Arrays.toString(Addends.findAddingNumbers(provided, target)));&lt;br /&gt;
        Addends.doTwoNumbersAdd(provided, target);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Find two numbers that add up==&lt;br /&gt;
You have a set of numbers and another number (target) that is comprised of two numbers in the set added up. How do you find if there are two numbers in the set that add up?&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
&lt;br /&gt;
public class TwoThatAdd {&lt;br /&gt;
    static int[] showAdded(int[] set, int target) {&lt;br /&gt;
        Arrays.sort(set);&lt;br /&gt;
        int left = 0;&lt;br /&gt;
        int right = (set.length - 1);&lt;br /&gt;
        while (left &amp;lt; right) {&lt;br /&gt;
            if (set[left] + set[right] == target) {&lt;br /&gt;
                return new int[]{set[left], set[right]};&lt;br /&gt;
            } else if (set[left] + set[right] &amp;lt; target) {&lt;br /&gt;
                left++;&lt;br /&gt;
            } else {&lt;br /&gt;
                right--;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return new int[]{};&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        int[] options = {2, 4, 6, 7, 11, 13, 16};&lt;br /&gt;
        int target = 18;&lt;br /&gt;
        System.out.println(Arrays.toString(TwoThatAdd.showAdded(options, target)));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Find distinct letters in a word==&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
&lt;br /&gt;
public class Distinct {&lt;br /&gt;
    void print_distinct(String given) {&lt;br /&gt;
        /*Take the given word and split it with commas to create an array*/&lt;br /&gt;
        String[] arrayed = given.split(&amp;quot;&amp;quot;);&lt;br /&gt;
        /*Add the values of the arrays to a set*/&lt;br /&gt;
        Set&amp;lt;String&amp;gt; set = new HashSet&amp;lt;&amp;gt;(Arrays.asList(arrayed));&lt;br /&gt;
        /*A set contains distinct values. Print them*/&lt;br /&gt;
        System.out.println(&amp;quot;Print distinct contents&amp;quot; + Arrays.toString(set.toArray()));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        Distinct d = new Distinct();&lt;br /&gt;
        String given = &amp;quot;mississippi&amp;quot;;&lt;br /&gt;
        d.print_distinct(given);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=Algorithms&amp;diff=155</id>
		<title>Algorithms</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=Algorithms&amp;diff=155"/>
		<updated>2022-10-27T15:36:47Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* Sum of two numbers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below is a collection of algorithms. The title of the algorithm describes (as much as possible) what the algorithm does.&lt;br /&gt;
&lt;br /&gt;
==Java Graph Implementation with Search Methods==&lt;br /&gt;
&lt;br /&gt;
The algorithm below implements the organization chart below:&lt;br /&gt;
&lt;br /&gt;
Jimbo Jones is employee id 38 and is the President.&lt;br /&gt;
&lt;br /&gt;
Mike McCobb, id 39, is a VP and reports to Jimbo Jones.&lt;br /&gt;
&lt;br /&gt;
Elda Two, id 43, is a VP and reports to Jimbo Jones.&lt;br /&gt;
&lt;br /&gt;
Simon Sneath, id 48, is a VP and reports to Jimbo Jones.&lt;br /&gt;
&lt;br /&gt;
Tim Scott, id 56, is a Manager and reports to Mike McCobb.&lt;br /&gt;
&lt;br /&gt;
Bob Tilman, id 58, is a Manager and reports to Mike McCobb.&lt;br /&gt;
&lt;br /&gt;
Andrew Cole, id 78, is an Analyst and reports to Tim Scott.&lt;br /&gt;
&lt;br /&gt;
Matt Lemon, id 83, is an Analyst and reports to Tim Scott.&lt;br /&gt;
&lt;br /&gt;
Chris Lock, id 88, is an Analyst and reports to Tim Scott.&lt;br /&gt;
&lt;br /&gt;
Agnes White, id 71, is an Accountant and reports to Bob Tilman.&lt;br /&gt;
&lt;br /&gt;
George Mills, id 61, is a Manager and reports to Elda Two.&lt;br /&gt;
&lt;br /&gt;
Thomas Wells, id 59, is a Manager and reports to Elda Two.&lt;br /&gt;
&lt;br /&gt;
Zip Two, id 63, is Manager and also reports to Elda Two.&lt;br /&gt;
&lt;br /&gt;
Rasta Him, id 73, is a Technician and reports to Thomas Wells.&lt;br /&gt;
&lt;br /&gt;
Claire Collins, id 89, is a Supervisor and reports to George Mills.&lt;br /&gt;
&lt;br /&gt;
Jim Four, id 95, is a Receptionist and reports to Claire Collins.&lt;br /&gt;
&lt;br /&gt;
Tom Flat, id 104, is a Receptionist who reports to Claire Collins.&lt;br /&gt;
&lt;br /&gt;
Grace Marks, id 64, is a Manager and reports to Simon Sneath.&lt;br /&gt;
&lt;br /&gt;
Dan Four, id 68, is a Manager and reports to Simon Sneath.&lt;br /&gt;
&lt;br /&gt;
Shad Fifty, id 117, is in Security and reports to Dan Four.&lt;br /&gt;
&lt;br /&gt;
Tall Nephew, id 108, is in Legal and reports to Grace Marks.&lt;br /&gt;
&lt;br /&gt;
Short Nephew, id 109, is in Legal and reports to Grace Marks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class Chart {&lt;br /&gt;
    static class Employee {&lt;br /&gt;
        int id;&lt;br /&gt;
        String firstName;&lt;br /&gt;
        String lastName;&lt;br /&gt;
        String jobTitle;&lt;br /&gt;
        boolean mapped;&lt;br /&gt;
&lt;br /&gt;
        Employee(int id, String fn, String ln, String jt) {&lt;br /&gt;
            this.id = id;&lt;br /&gt;
            this.jobTitle = jt;&lt;br /&gt;
            this.firstName = fn;&lt;br /&gt;
            this.lastName = ln;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void map() {&lt;br /&gt;
            mapped = true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void unmap() {&lt;br /&gt;
            mapped = false;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private final HashMap&amp;lt;Employee, LinkedList&amp;lt;Employee&amp;gt;&amp;gt; assignment;&lt;br /&gt;
&lt;br /&gt;
    public Chart(boolean directed) {&lt;br /&gt;
        assignment = new HashMap&amp;lt;&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdgeHelper(Employee a, Employee b) {&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; e = assignment.get(a);&lt;br /&gt;
        if (e != null) {&lt;br /&gt;
            assignment.remove(b);&lt;br /&gt;
        } else&lt;br /&gt;
            e = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        e.add(b);&lt;br /&gt;
        assignment.put(a, e);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdge(Employee boss, Employee subordinate) {&lt;br /&gt;
        if (!assignment.containsKey(boss))&lt;br /&gt;
            assignment.put(boss, null);&lt;br /&gt;
        if (!assignment.containsKey(subordinate))&lt;br /&gt;
            assignment.put(subordinate, null);&lt;br /&gt;
        addEdgeHelper(boss, subordinate);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void depthFirstSearch(Employee employee) {&lt;br /&gt;
        employee.map();&lt;br /&gt;
        System.out.println(employee.firstName + &amp;quot; &amp;quot; + employee.lastName + &amp;quot; is a &amp;quot; + employee.jobTitle);&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; neighbors = assignment.get(employee);&lt;br /&gt;
        if (neighbors == null)&lt;br /&gt;
            return;&lt;br /&gt;
        for (Employee e : neighbors) {&lt;br /&gt;
            if (!e.mapped)&lt;br /&gt;
                depthFirstSearch(e);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void breadthFirstSearch(Employee employee) {&lt;br /&gt;
        /*Check if target item is null - if so quit*/&lt;br /&gt;
        if (employee == null)&lt;br /&gt;
            return;&lt;br /&gt;
        /*Declare a queue using LinkedList and add the target item*/&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        queue.add(employee);&lt;br /&gt;
        /*As long as the queue has data get the first in item .removeFirst*/&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Employee currentFirst = queue.removeFirst();&lt;br /&gt;
            /*If visited move on*/&lt;br /&gt;
            if (currentFirst.mapped) {&lt;br /&gt;
                continue;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*else visit it and print it*/&lt;br /&gt;
                currentFirst.map();&lt;br /&gt;
                System.out.println(currentFirst.id + &amp;quot;: &amp;quot; + currentFirst.firstName + &amp;quot; &amp;quot; + currentFirst.lastName + &amp;quot; - &amp;quot; + currentFirst.jobTitle);&lt;br /&gt;
            }&lt;br /&gt;
            /*Find neighbors of the current item*/&lt;br /&gt;
            LinkedList&amp;lt;Employee&amp;gt; allNeighbors = assignment.get(currentFirst);&lt;br /&gt;
            /*If there are none move on*/&lt;br /&gt;
            if (allNeighbors == null)&lt;br /&gt;
                continue;&lt;br /&gt;
            /*else if there are some and not visited, add them to the queue and the process starts over*/&lt;br /&gt;
            for (Employee e : allNeighbors) {&lt;br /&gt;
                if (!e.mapped)&lt;br /&gt;
                    queue.add(e);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void resetMapping() {&lt;br /&gt;
        for (Employee e : assignment.keySet()) {&lt;br /&gt;
            e.unmap();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Employee a = new Employee(38, &amp;quot;Jimbo&amp;quot;, &amp;quot;Jones&amp;quot;, &amp;quot;President&amp;quot;);&lt;br /&gt;
        Employee b = new Employee(39, &amp;quot;Mike&amp;quot;, &amp;quot;McCobb&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee c = new Employee(43, &amp;quot;Elda&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee d = new Employee(48, &amp;quot;Simon&amp;quot;, &amp;quot;Sneeth&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee e = new Employee(56, &amp;quot;Tim&amp;quot;, &amp;quot;Scott&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee f = new Employee(58, &amp;quot;Bob&amp;quot;, &amp;quot;Tilman&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee g = new Employee(78, &amp;quot;Andrew&amp;quot;, &amp;quot;Cole&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee h = new Employee(83, &amp;quot;Matt&amp;quot;, &amp;quot;Lemon&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee i = new Employee(88, &amp;quot;Chris&amp;quot;, &amp;quot;Lock&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee j = new Employee(71, &amp;quot;Agnes&amp;quot;, &amp;quot;White&amp;quot;, &amp;quot;Accountant&amp;quot;);&lt;br /&gt;
        Employee k = new Employee(61, &amp;quot;George&amp;quot;, &amp;quot;Mills&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee l = new Employee(59, &amp;quot;Thomas&amp;quot;, &amp;quot;Wells&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee m = new Employee(63, &amp;quot;Zip&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee n = new Employee(73, &amp;quot;Rasta&amp;quot;, &amp;quot;Him&amp;quot;, &amp;quot;Technician&amp;quot;);&lt;br /&gt;
        Employee o = new Employee(89, &amp;quot;Claire&amp;quot;, &amp;quot;Collins&amp;quot;, &amp;quot;Supervisor&amp;quot;);&lt;br /&gt;
        Employee p = new Employee(95, &amp;quot;Jim&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee q = new Employee(104, &amp;quot;Tom&amp;quot;, &amp;quot;Flat&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee r = new Employee(64, &amp;quot;Grace&amp;quot;, &amp;quot;Marks&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee s = new Employee(68, &amp;quot;Dan&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee t = new Employee(117, &amp;quot;Shad&amp;quot;, &amp;quot;Fifty&amp;quot;, &amp;quot;Security&amp;quot;);&lt;br /&gt;
        Employee u = new Employee(108, &amp;quot;Tall&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
        Employee v = new Employee(109, &amp;quot;Short&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        Chart chart = new Chart(true);&lt;br /&gt;
        chart.addEdge(a, b);&lt;br /&gt;
        chart.addEdge(a, c);&lt;br /&gt;
        chart.addEdge(a, d);&lt;br /&gt;
        chart.addEdge(b, e);&lt;br /&gt;
        chart.addEdge(b, f);&lt;br /&gt;
        chart.addEdge(e, g);&lt;br /&gt;
        chart.addEdge(e, h);&lt;br /&gt;
        chart.addEdge(e, i);&lt;br /&gt;
        chart.addEdge(f, j);&lt;br /&gt;
        chart.addEdge(c, k);&lt;br /&gt;
        chart.addEdge(c, l);&lt;br /&gt;
        chart.addEdge(c, m);&lt;br /&gt;
        chart.addEdge(l, n);&lt;br /&gt;
        chart.addEdge(k, o);&lt;br /&gt;
        chart.addEdge(o, p);&lt;br /&gt;
        chart.addEdge(o, q);&lt;br /&gt;
        chart.addEdge(d, r);&lt;br /&gt;
        chart.addEdge(d, s);&lt;br /&gt;
        chart.addEdge(s, t);&lt;br /&gt;
        chart.addEdge(r, u);&lt;br /&gt;
        chart.addEdge(r, v);&lt;br /&gt;
        //System.out.println(a.firstName + &amp;quot; &amp;quot; + a.lastName + &amp;quot; &amp;quot; + a.jobTitle + &amp;quot; &amp;quot; + a.id);&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        //chart.depthFirstSearch(k);&lt;br /&gt;
&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        chart.breadthFirstSearch(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Find missing number==&lt;br /&gt;
You are given an array of positive numbers from 1 to n, such that all numbers from 1 to n are present except one number x. You have to find x. The input array is not sorted. Look at the below array and give it a try before checking the solution.&lt;br /&gt;
&lt;br /&gt;
The missing number = a sum of the provided array subtracted from a sum of indices + 2&lt;br /&gt;
example 1, 2, 4 missing is 3 = (1 +2 +3+4) - (1 +2+4)&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
public class MissingNum {&lt;br /&gt;
    public static int findMissing(List&amp;lt;Integer&amp;gt; l) {&lt;br /&gt;
        int tot_prov = 0;&lt;br /&gt;
        for (Integer integer : l) {&lt;br /&gt;
            tot_prov += integer;&lt;br /&gt;
        }&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; k = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;
        int tot_req = 0;&lt;br /&gt;
        for (int i = 0; i &amp;lt; l.size() + 2; i++) {&lt;br /&gt;
            k.add(i);&lt;br /&gt;
            tot_req += k.get(i);&lt;br /&gt;
        }&lt;br /&gt;
        return tot_req - tot_prov;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; g = Arrays.asList(8, 5, 3, 2, 4, 1, 7);&lt;br /&gt;
        System.out.println(&amp;quot;The missing number is &amp;quot; + findMissing(g));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Mergesort==&lt;br /&gt;
public class MergeSort {&lt;br /&gt;
&lt;br /&gt;
    private static Comparable[] aux;&lt;br /&gt;
&lt;br /&gt;
    public static void sort(Comparable[] a) {&lt;br /&gt;
        aux = new Comparable[a.length];&lt;br /&gt;
        sort(a, 0, a.length - 1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void merge(Comparable[] a, int lo, int mid, int hi) {&lt;br /&gt;
        assert isSorted(a, lo, mid);&lt;br /&gt;
        assert isSorted(a, mid + 1, hi);&lt;br /&gt;
        //copy for [] a to [] aux&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            aux[k] = a[k];&lt;br /&gt;
        }&lt;br /&gt;
        // the merging process&lt;br /&gt;
        // i is the first index of the first half of the array&lt;br /&gt;
        // j is the first index of the second half of the array&lt;br /&gt;
        int i = lo, j = mid + 1;&lt;br /&gt;
&lt;br /&gt;
        // for every value of k - the indices of [] a&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            /*Left half exhausted take from the right*/&lt;br /&gt;
            if (i &amp;gt; mid)&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Right half exhausted take from the left*/&lt;br /&gt;
            else if (j &amp;gt; hi)&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
                /*Current key on the right less than current key on the left take from the right*/&lt;br /&gt;
            else if (less(aux[j], aux[i]))&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Current key on the right greater than current key on the left take from the left */&lt;br /&gt;
            else&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
        }&lt;br /&gt;
        assert isSorted(a, lo, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void sort(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        if (hi &amp;lt;= lo)&lt;br /&gt;
            return;&lt;br /&gt;
        int mid = lo + (hi - lo) / 2;&lt;br /&gt;
        sort(a, lo, mid);&lt;br /&gt;
        sort(a, mid + 1, hi);&lt;br /&gt;
        merge(a, lo, mid, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean less(Comparable v, Comparable w) {&lt;br /&gt;
        return v.compareTo(w) &amp;lt; 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean isSorted(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        for (int i = lo + 1; i &amp;lt;= hi; i++)&lt;br /&gt;
            if (less(a[i], a[i - 1])) return false;&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void show(Comparable[] a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length; i++) {&lt;br /&gt;
            //System.out.print(a[i]);&lt;br /&gt;
            System.out.println(a[i]);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        // Comparable[] a = {&amp;quot;E&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;A&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;T&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
        Comparable[] aa = {&amp;quot;A&amp;quot;, &amp;quot;X&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;};&lt;br /&gt;
        Comparable[] bb = {&amp;quot;H&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;J&amp;quot;, &amp;quot;Y&amp;quot;, &amp;quot;Z&amp;quot;};&lt;br /&gt;
        /*Merge the two comparable arrays*/&lt;br /&gt;
        Comparable[] a = new Comparable[aa.length + bb.length];&lt;br /&gt;
        System.arraycopy(aa, 0, a, 0, aa.length);&lt;br /&gt;
        System.arraycopy(bb, 0, a, aa.length, bb.length);&lt;br /&gt;
&lt;br /&gt;
        MergeSort.sort(a);&lt;br /&gt;
        show(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Binary Search==&lt;br /&gt;
public class BinarySearch {&lt;br /&gt;
    public static int find(int[] arr, int target) {&lt;br /&gt;
        int left = 0;&lt;br /&gt;
        int right = arr.length - 1;&lt;br /&gt;
        while (left &amp;lt;= right) {&lt;br /&gt;
            int mid = left + (right - left);&lt;br /&gt;
            if (arr[mid] == target)&lt;br /&gt;
                return mid;&lt;br /&gt;
            if (arr[mid] &amp;lt; target) {&lt;br /&gt;
                left = mid + 1;&lt;br /&gt;
            } else {&lt;br /&gt;
                right = mid - 1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return -1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        int[] f = {1, 10, 20, 47, 59, 63, 75, 88, 99, 107, 120, 133, 155, 162, 176, 188, 199, 200, 210, 222, 223};&lt;br /&gt;
        int t = 162;&lt;br /&gt;
        System.out.println(find(f, t));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Validate Binary Search Tree==&lt;br /&gt;
&lt;br /&gt;
Given a Binary Tree, figure out whether it’s a Binary Search Tree. In a binary search tree, each node’s key value is smaller than the key value of all nodes in the right subtree, and is greater than the key values of all nodes in the left subtree. Below is an example of a binary tree that is a valid BST.&lt;br /&gt;
&lt;br /&gt;
public class BinarySearchTree {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int value) {&lt;br /&gt;
            this.value = value;&lt;br /&gt;
            this.left = null;&lt;br /&gt;
            this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public BinarySearchTree() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    public boolean isbst(Node root, Node l, Node r) {&lt;br /&gt;
        if (root == null)&lt;br /&gt;
            return true;&lt;br /&gt;
        if (l != null &amp;amp;&amp;amp; l.value &amp;gt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        if (r != null &amp;amp;&amp;amp; r.value &amp;lt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        return isbst(root.left, l, root) &amp;amp;&amp;amp; isbst(root.right, root, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        BinarySearchTree bt = new BinarySearchTree();&lt;br /&gt;
        bt.root = new Node(10);&lt;br /&gt;
        bt.root.left = new Node(5);&lt;br /&gt;
        bt.root.right = new Node(15);&lt;br /&gt;
        bt.root.left.left = new Node(4);&lt;br /&gt;
        bt.root.left.right = new Node(7);&lt;br /&gt;
        bt.root.right.left = new Node(13);&lt;br /&gt;
        bt.root.right.right = new Node(26);&lt;br /&gt;
        if (bt.isbst(bt.root, null, null))&lt;br /&gt;
            System.out.println(&amp;quot;Is a BST&amp;quot;);&lt;br /&gt;
        else&lt;br /&gt;
            System.out.println(&amp;quot;Is not a BST&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Determine if two integers add up to given number==&lt;br /&gt;
Given an array of integers and a value, determine if there are any two integers in the array whose sum is equal to the given value. Return true if the sum exists and return false if it does not. Consider this array and the target sums:&lt;br /&gt;
public class SumOfTwo {&lt;br /&gt;
        public static void main(String args[]) {&lt;br /&gt;
            Set&amp;lt;Integer&amp;gt; set = new HashSet&amp;lt;&amp;gt;(); /*Populate this Set with target values*/&lt;br /&gt;
            /*Array of target values*/&lt;br /&gt;
            int[] g = {5, 6, 8, 39, 9, 11, 20, 59, 10, 1};&lt;br /&gt;
            /*Insert the arrays values in the set*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                set.add(g[i]);&lt;br /&gt;
            }&lt;br /&gt;
            /*Set a target number to check for*/&lt;br /&gt;
            int y = 20;&lt;br /&gt;
            /*If there are a set of numbers that would add up, increment this counter*/&lt;br /&gt;
            int counter = 0;&lt;br /&gt;
            /*Pick up a number in the set by turns and assign it to x*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                int x = g[i];&lt;br /&gt;
                /*Check to see if the set contains target minus found number.*/&lt;br /&gt;
                if (set.contains(y - x)) { //if this is true&lt;br /&gt;
                    /*If so, increment the counter by 1*/&lt;br /&gt;
                    counter += 1;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (counter &amp;gt; 0) { /*Some numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            } else { /*No numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are no sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Merge two sorted lists==&lt;br /&gt;
Given two sorted linked lists, merge them so that the resulting linked list is also sorted. Consider two sorted linked lists and the merged list below them as an example.&lt;br /&gt;
import java.util.Stack;&lt;br /&gt;
/*This code merges two ordered lists into one keeping their increasing order&lt;br /&gt;
 * the lists used for testing are in the main function*/&lt;br /&gt;
public class MergeLists {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int data;&lt;br /&gt;
        Node next;&lt;br /&gt;
        Node(int z) {&lt;br /&gt;
            this.data = z;&lt;br /&gt;
            next = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads the values of a list and loads them on a Stack, then reads from the stack*/&lt;br /&gt;
    public static void loadInStack(Node f) {&lt;br /&gt;
        Stack&amp;lt;Integer&amp;gt; pack = new Stack&amp;lt;&amp;gt;();&lt;br /&gt;
        if (f == null)&lt;br /&gt;
            return;&lt;br /&gt;
        pack.push(f.data);&lt;br /&gt;
        loadInStack(f.next);&lt;br /&gt;
        System.out.println(pack);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function duplicates the provided list into another one*/&lt;br /&gt;
    public static void duplicateList(Node m) {&lt;br /&gt;
        Node hold = new Node(-1);&lt;br /&gt;
        if (m == null)&lt;br /&gt;
            return;&lt;br /&gt;
        hold.data = m.data;&lt;br /&gt;
        duplicateList(m.next);&lt;br /&gt;
        System.out.println(hold.data);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads from two lists picking the lesser of*/&lt;br /&gt;
    /*It takes in two lists as variables a and b*/&lt;br /&gt;
    public static void pickTwo(Node a, Node b) {&lt;br /&gt;
        /*This is a dummy list initialized with -1*/&lt;br /&gt;
        Node dummyList = new Node(-1);&lt;br /&gt;
        while (a != null &amp;amp;&amp;amp; b != null) {&lt;br /&gt;
            if (a.data &amp;lt;= b.data) {&lt;br /&gt;
                /*populate the dummy list from a, if smaller*/&lt;br /&gt;
                dummyList.data = a.data;&lt;br /&gt;
                /*Increment a*/&lt;br /&gt;
                a = a.next;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*populate the dummy list from b, if smaller*/&lt;br /&gt;
                dummyList.data = b.data;&lt;br /&gt;
                /*Increment b*/&lt;br /&gt;
                b = b.next;&lt;br /&gt;
            }&lt;br /&gt;
            /*Print when done*/&lt;br /&gt;
            System.out.print(dummyList.data + &amp;quot; -&amp;gt; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Node f = new Node(2);&lt;br /&gt;
        Node g = new Node(7);&lt;br /&gt;
        Node h = new Node(8);&lt;br /&gt;
        Node i = new Node(11);&lt;br /&gt;
&lt;br /&gt;
        f.next = g;&lt;br /&gt;
        g.next = h;&lt;br /&gt;
        h.next = i;&lt;br /&gt;
&lt;br /&gt;
        //printNodes(f);&lt;br /&gt;
&lt;br /&gt;
        Node k = new Node(4);&lt;br /&gt;
        Node l = new Node(6);&lt;br /&gt;
        Node m = new Node(9);&lt;br /&gt;
        Node n = new Node(10);&lt;br /&gt;
        Node o = new Node(12);&lt;br /&gt;
&lt;br /&gt;
        k.next = l;&lt;br /&gt;
        l.next = m;&lt;br /&gt;
        m.next = n;&lt;br /&gt;
        n.next = o;&lt;br /&gt;
&lt;br /&gt;
        //loadInStack(f);&lt;br /&gt;
        //duplicateList(k);&lt;br /&gt;
        pickTwo(f, k);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Reverse String==&lt;br /&gt;
&lt;br /&gt;
Reverse the order of words in a given sentence (an array of characters).&lt;br /&gt;
&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class ReverseString {&lt;br /&gt;
    public static void lizy(String[] curr) {&lt;br /&gt;
        LinkedList&amp;lt;String&amp;gt; y = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        for (int g = 0; g &amp;lt;= curr.length - 1; g++) {&lt;br /&gt;
            y.add(curr[g]);&lt;br /&gt;
        }&lt;br /&gt;
        Iterator i = y.descendingIterator();&lt;br /&gt;
        while (i.hasNext()) {&lt;br /&gt;
            System.out.print(i.next() + &amp;quot; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        String given = &amp;quot;Hello World&amp;quot;;&lt;br /&gt;
        String[] given_array = given.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String lineOfCurrencies = &amp;quot;USD JPY AUD SGD HKD CAD CHF GBP EURO INR&amp;quot;;&lt;br /&gt;
        String multispace = &amp;quot;Kenya    Uganda Tanzania   Burundi     Rwanda&amp;quot;;&lt;br /&gt;
        String[] currencies = lineOfCurrencies.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String[] ms = multispace.split(&amp;quot;\\s+&amp;quot;);&lt;br /&gt;
        ReverseString.lizy(given_array);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Level Order Traversal of Binary Tree==&lt;br /&gt;
&lt;br /&gt;
Given the root of a binary tree, display the node values at each level. Node values for all levels should be displayed on separate lines. Let’s take a look at the below binary tree.&lt;br /&gt;
&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class Lot {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int v) {&lt;br /&gt;
            this.value = v;&lt;br /&gt;
            this.left = this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public Lot() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    void lot() {&lt;br /&gt;
        LinkedList&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        //Queue&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;Node&amp;gt;();&lt;br /&gt;
        queue.add(root);&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Node tempNode = queue.removeFirst();&lt;br /&gt;
            //Node tempNode = queue.poll();&lt;br /&gt;
            System.out.print(tempNode.value + &amp;quot; &amp;quot;);&lt;br /&gt;
            if (tempNode.left != null)&lt;br /&gt;
                queue.add(tempNode.left);&lt;br /&gt;
            if (tempNode.right != null)&lt;br /&gt;
                queue.add(tempNode.right);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Lot l = new Lot();&lt;br /&gt;
        l.root = new Node(100);&lt;br /&gt;
        l.root.left = new Node(50);&lt;br /&gt;
        l.root.right = new Node(200);&lt;br /&gt;
        l.root.left.left = new Node(25);&lt;br /&gt;
        l.root.left.right = new Node(75);&lt;br /&gt;
        l.root.right.right = new Node(350);&lt;br /&gt;
        System.out.println(&amp;quot;Level order traversal is as follows: &amp;quot;);&lt;br /&gt;
        l.lot();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==String Segmentation==&lt;br /&gt;
You are given a dictionary of words and a large input string. You have to find out whether the input string can be completely segmented into the words of a given dictionary. The following two examples elaborate on the problem further.&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
&lt;br /&gt;
public class Dictionary {&lt;br /&gt;
    boolean pair(Set&amp;lt;String&amp;gt; dictionary, String a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length(); i++) {&lt;br /&gt;
            String first_word = a.substring(0, i);&lt;br /&gt;
            if (dictionary.contains(first_word)) {&lt;br /&gt;
                String second_word = a.substring(i);&lt;br /&gt;
                if (dictionary.contains(second_word) || pair(dictionary, second_word)) {&lt;br /&gt;
                    return true;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        Dictionary dictionary = new Dictionary();&lt;br /&gt;
        Set&amp;lt;String&amp;gt; dict = new HashSet&amp;lt;&amp;gt;();&lt;br /&gt;
        dict.add(&amp;quot;geo&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;science&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;politics&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;thermal&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;physical&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;mis&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;under&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;stand&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;understand&amp;quot;);&lt;br /&gt;
        String word = &amp;quot;misunderstand&amp;quot;;&lt;br /&gt;
        if (dictionary.pair(dict, word)) {&lt;br /&gt;
            System.out.println(&amp;quot;The test word &amp;quot; + word + &amp;quot; fits in two words in the dictionary&amp;quot;);&lt;br /&gt;
        } else {&lt;br /&gt;
            System.out.println(&amp;quot;The test word &amp;quot; + word + &amp;quot; does not make dictionary words&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Computing number combinations==&lt;br /&gt;
Suppose we have coin denominations of [1, 2, 5] and the total amount is 7. We can make changes in the following 6 ways:&lt;br /&gt;
&lt;br /&gt;
public class Combinations {&lt;br /&gt;
    static int changeOptions(int[] denominations, int amount) {&lt;br /&gt;
        int[] solution = new int[amount + 1];&lt;br /&gt;
        solution[0] = 1;&lt;br /&gt;
        for (int x : denominations) {&lt;br /&gt;
            for (int i = x; i &amp;lt; (amount + 1); ++i) {&lt;br /&gt;
                solution[i] += solution[i - x];&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return solution[solution.length - 1];&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        int[] denominations = new int[]{1, 2, 5, 10};&lt;br /&gt;
        int amount = 5;&lt;br /&gt;
        int result = changeOptions(denominations, amount);&lt;br /&gt;
        System.out.println(&amp;quot;There are &amp;quot; + result + &amp;quot; combinations in forming &amp;quot; + amount + &amp;quot; given the factors below: &amp;quot;);&lt;br /&gt;
        for (int denomination : denominations) {&lt;br /&gt;
            System.out.println(denomination);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Sum of two numbers==&lt;br /&gt;
Are there two numbers in the provided set that add up to the given number?&lt;br /&gt;
===Brute force method===&lt;br /&gt;
&lt;br /&gt;
We start with a brute force method that checks every number. Big 0(n).&lt;br /&gt;
&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
&lt;br /&gt;
public class SumOfTwo {&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Set&amp;lt;Integer&amp;gt; set = new HashSet&amp;lt;&amp;gt;(); /*Populate this Set with target values*/&lt;br /&gt;
        /*Array of target values*/&lt;br /&gt;
        int[] g = {5, 6, 8, 39, 9, 11, 20, 59, 10, 1};&lt;br /&gt;
        /*Insert the arrays values in the set*/&lt;br /&gt;
        for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
            set.add(g[i]);&lt;br /&gt;
        }&lt;br /&gt;
        /*Set a target number to check for*/&lt;br /&gt;
        int y = 20;&lt;br /&gt;
        /*If there are a set of numbers that would add up, increment this counter*/&lt;br /&gt;
        int counter = 0;&lt;br /&gt;
        /*Pick up a number in the set by turns and assign it to x*/&lt;br /&gt;
        for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
            int x = g[i];&lt;br /&gt;
            /*Check to see if the set contains target minus found number.*/&lt;br /&gt;
            if (set.contains(y - x)) { //if this is true&lt;br /&gt;
                /*If so, increment the counter by 1*/&lt;br /&gt;
                counter += 1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        if (counter &amp;gt; 0) { /*Some numbers add up*/&lt;br /&gt;
            System.out.println(&amp;quot;There are sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
        } else { /*No numbers add up*/&lt;br /&gt;
            System.out.println(&amp;quot;There are no sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
===Two pointer method===&lt;br /&gt;
This method uses a function to find the two numbers then makes a determination&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
&lt;br /&gt;
public class Addends {&lt;br /&gt;
    static void doTwoNumbersAdd(int[] a, int b) {&lt;br /&gt;
        int[] z = findAddingNumbers(a, b);&lt;br /&gt;
        if (z.length &amp;gt; 0) {&lt;br /&gt;
            System.out.println(&amp;quot;There are two numbers that add up to &amp;quot; + b);&lt;br /&gt;
        } else {&lt;br /&gt;
            System.out.println(&amp;quot;There are no numbers that add up to &amp;quot; + b);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    static int[] findAddingNumbers(int[] arr, int t) {&lt;br /&gt;
        Arrays.sort(arr);&lt;br /&gt;
        int lo = 0;&lt;br /&gt;
        int hi = (arr.length - 1);&lt;br /&gt;
        while (lo &amp;lt; hi) {&lt;br /&gt;
            if (arr[lo] + arr[hi] == t) {&lt;br /&gt;
                return new int[]{arr[lo], arr[hi]};&lt;br /&gt;
            } else if (arr[lo] + arr[hi] &amp;lt; t) {&lt;br /&gt;
                lo++;&lt;br /&gt;
            } else {&lt;br /&gt;
                hi--;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return new int[]{};&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        int[] provided = {8, 5, 7, 3, 2, 9, 6, 4};&lt;br /&gt;
        int target = 12;&lt;br /&gt;
        System.out.println(&amp;quot;These two numbers that add up to &amp;quot; + target + &amp;quot; are &amp;quot; + Arrays.toString(Addends.findAddingNumbers(provided, target)));&lt;br /&gt;
        Addends.doTwoNumbersAdd(provided, target);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Find two numbers that add up==&lt;br /&gt;
You have a set of numbers and another number (target) that is comprised of two numbers in the set added up. How do you find if there are two numbers in the set that add up?&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
&lt;br /&gt;
public class TwoThatAdd {&lt;br /&gt;
    static int[] showAdded(int[] set, int target) {&lt;br /&gt;
        Arrays.sort(set);&lt;br /&gt;
        int left = 0;&lt;br /&gt;
        int right = (set.length - 1);&lt;br /&gt;
        while (left &amp;lt; right) {&lt;br /&gt;
            if (set[left] + set[right] == target) {&lt;br /&gt;
                return new int[]{set[left], set[right]};&lt;br /&gt;
            } else if (set[left] + set[right] &amp;lt; target) {&lt;br /&gt;
                left++;&lt;br /&gt;
            } else {&lt;br /&gt;
                right--;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return new int[]{};&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        int[] options = {2, 4, 6, 7, 11, 13, 16};&lt;br /&gt;
        int target = 18;&lt;br /&gt;
        System.out.println(Arrays.toString(TwoThatAdd.showAdded(options, target)));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=Algorithms&amp;diff=154</id>
		<title>Algorithms</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=Algorithms&amp;diff=154"/>
		<updated>2022-10-27T15:34:28Z</updated>

		<summary type="html">&lt;p&gt;Leksy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below is a collection of algorithms. The title of the algorithm describes (as much as possible) what the algorithm does.&lt;br /&gt;
&lt;br /&gt;
==Java Graph Implementation with Search Methods==&lt;br /&gt;
&lt;br /&gt;
The algorithm below implements the organization chart below:&lt;br /&gt;
&lt;br /&gt;
Jimbo Jones is employee id 38 and is the President.&lt;br /&gt;
&lt;br /&gt;
Mike McCobb, id 39, is a VP and reports to Jimbo Jones.&lt;br /&gt;
&lt;br /&gt;
Elda Two, id 43, is a VP and reports to Jimbo Jones.&lt;br /&gt;
&lt;br /&gt;
Simon Sneath, id 48, is a VP and reports to Jimbo Jones.&lt;br /&gt;
&lt;br /&gt;
Tim Scott, id 56, is a Manager and reports to Mike McCobb.&lt;br /&gt;
&lt;br /&gt;
Bob Tilman, id 58, is a Manager and reports to Mike McCobb.&lt;br /&gt;
&lt;br /&gt;
Andrew Cole, id 78, is an Analyst and reports to Tim Scott.&lt;br /&gt;
&lt;br /&gt;
Matt Lemon, id 83, is an Analyst and reports to Tim Scott.&lt;br /&gt;
&lt;br /&gt;
Chris Lock, id 88, is an Analyst and reports to Tim Scott.&lt;br /&gt;
&lt;br /&gt;
Agnes White, id 71, is an Accountant and reports to Bob Tilman.&lt;br /&gt;
&lt;br /&gt;
George Mills, id 61, is a Manager and reports to Elda Two.&lt;br /&gt;
&lt;br /&gt;
Thomas Wells, id 59, is a Manager and reports to Elda Two.&lt;br /&gt;
&lt;br /&gt;
Zip Two, id 63, is Manager and also reports to Elda Two.&lt;br /&gt;
&lt;br /&gt;
Rasta Him, id 73, is a Technician and reports to Thomas Wells.&lt;br /&gt;
&lt;br /&gt;
Claire Collins, id 89, is a Supervisor and reports to George Mills.&lt;br /&gt;
&lt;br /&gt;
Jim Four, id 95, is a Receptionist and reports to Claire Collins.&lt;br /&gt;
&lt;br /&gt;
Tom Flat, id 104, is a Receptionist who reports to Claire Collins.&lt;br /&gt;
&lt;br /&gt;
Grace Marks, id 64, is a Manager and reports to Simon Sneath.&lt;br /&gt;
&lt;br /&gt;
Dan Four, id 68, is a Manager and reports to Simon Sneath.&lt;br /&gt;
&lt;br /&gt;
Shad Fifty, id 117, is in Security and reports to Dan Four.&lt;br /&gt;
&lt;br /&gt;
Tall Nephew, id 108, is in Legal and reports to Grace Marks.&lt;br /&gt;
&lt;br /&gt;
Short Nephew, id 109, is in Legal and reports to Grace Marks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class Chart {&lt;br /&gt;
    static class Employee {&lt;br /&gt;
        int id;&lt;br /&gt;
        String firstName;&lt;br /&gt;
        String lastName;&lt;br /&gt;
        String jobTitle;&lt;br /&gt;
        boolean mapped;&lt;br /&gt;
&lt;br /&gt;
        Employee(int id, String fn, String ln, String jt) {&lt;br /&gt;
            this.id = id;&lt;br /&gt;
            this.jobTitle = jt;&lt;br /&gt;
            this.firstName = fn;&lt;br /&gt;
            this.lastName = ln;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void map() {&lt;br /&gt;
            mapped = true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void unmap() {&lt;br /&gt;
            mapped = false;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private final HashMap&amp;lt;Employee, LinkedList&amp;lt;Employee&amp;gt;&amp;gt; assignment;&lt;br /&gt;
&lt;br /&gt;
    public Chart(boolean directed) {&lt;br /&gt;
        assignment = new HashMap&amp;lt;&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdgeHelper(Employee a, Employee b) {&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; e = assignment.get(a);&lt;br /&gt;
        if (e != null) {&lt;br /&gt;
            assignment.remove(b);&lt;br /&gt;
        } else&lt;br /&gt;
            e = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        e.add(b);&lt;br /&gt;
        assignment.put(a, e);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdge(Employee boss, Employee subordinate) {&lt;br /&gt;
        if (!assignment.containsKey(boss))&lt;br /&gt;
            assignment.put(boss, null);&lt;br /&gt;
        if (!assignment.containsKey(subordinate))&lt;br /&gt;
            assignment.put(subordinate, null);&lt;br /&gt;
        addEdgeHelper(boss, subordinate);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void depthFirstSearch(Employee employee) {&lt;br /&gt;
        employee.map();&lt;br /&gt;
        System.out.println(employee.firstName + &amp;quot; &amp;quot; + employee.lastName + &amp;quot; is a &amp;quot; + employee.jobTitle);&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; neighbors = assignment.get(employee);&lt;br /&gt;
        if (neighbors == null)&lt;br /&gt;
            return;&lt;br /&gt;
        for (Employee e : neighbors) {&lt;br /&gt;
            if (!e.mapped)&lt;br /&gt;
                depthFirstSearch(e);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void breadthFirstSearch(Employee employee) {&lt;br /&gt;
        /*Check if target item is null - if so quit*/&lt;br /&gt;
        if (employee == null)&lt;br /&gt;
            return;&lt;br /&gt;
        /*Declare a queue using LinkedList and add the target item*/&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        queue.add(employee);&lt;br /&gt;
        /*As long as the queue has data get the first in item .removeFirst*/&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Employee currentFirst = queue.removeFirst();&lt;br /&gt;
            /*If visited move on*/&lt;br /&gt;
            if (currentFirst.mapped) {&lt;br /&gt;
                continue;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*else visit it and print it*/&lt;br /&gt;
                currentFirst.map();&lt;br /&gt;
                System.out.println(currentFirst.id + &amp;quot;: &amp;quot; + currentFirst.firstName + &amp;quot; &amp;quot; + currentFirst.lastName + &amp;quot; - &amp;quot; + currentFirst.jobTitle);&lt;br /&gt;
            }&lt;br /&gt;
            /*Find neighbors of the current item*/&lt;br /&gt;
            LinkedList&amp;lt;Employee&amp;gt; allNeighbors = assignment.get(currentFirst);&lt;br /&gt;
            /*If there are none move on*/&lt;br /&gt;
            if (allNeighbors == null)&lt;br /&gt;
                continue;&lt;br /&gt;
            /*else if there are some and not visited, add them to the queue and the process starts over*/&lt;br /&gt;
            for (Employee e : allNeighbors) {&lt;br /&gt;
                if (!e.mapped)&lt;br /&gt;
                    queue.add(e);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void resetMapping() {&lt;br /&gt;
        for (Employee e : assignment.keySet()) {&lt;br /&gt;
            e.unmap();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Employee a = new Employee(38, &amp;quot;Jimbo&amp;quot;, &amp;quot;Jones&amp;quot;, &amp;quot;President&amp;quot;);&lt;br /&gt;
        Employee b = new Employee(39, &amp;quot;Mike&amp;quot;, &amp;quot;McCobb&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee c = new Employee(43, &amp;quot;Elda&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee d = new Employee(48, &amp;quot;Simon&amp;quot;, &amp;quot;Sneeth&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee e = new Employee(56, &amp;quot;Tim&amp;quot;, &amp;quot;Scott&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee f = new Employee(58, &amp;quot;Bob&amp;quot;, &amp;quot;Tilman&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee g = new Employee(78, &amp;quot;Andrew&amp;quot;, &amp;quot;Cole&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee h = new Employee(83, &amp;quot;Matt&amp;quot;, &amp;quot;Lemon&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee i = new Employee(88, &amp;quot;Chris&amp;quot;, &amp;quot;Lock&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee j = new Employee(71, &amp;quot;Agnes&amp;quot;, &amp;quot;White&amp;quot;, &amp;quot;Accountant&amp;quot;);&lt;br /&gt;
        Employee k = new Employee(61, &amp;quot;George&amp;quot;, &amp;quot;Mills&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee l = new Employee(59, &amp;quot;Thomas&amp;quot;, &amp;quot;Wells&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee m = new Employee(63, &amp;quot;Zip&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee n = new Employee(73, &amp;quot;Rasta&amp;quot;, &amp;quot;Him&amp;quot;, &amp;quot;Technician&amp;quot;);&lt;br /&gt;
        Employee o = new Employee(89, &amp;quot;Claire&amp;quot;, &amp;quot;Collins&amp;quot;, &amp;quot;Supervisor&amp;quot;);&lt;br /&gt;
        Employee p = new Employee(95, &amp;quot;Jim&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee q = new Employee(104, &amp;quot;Tom&amp;quot;, &amp;quot;Flat&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee r = new Employee(64, &amp;quot;Grace&amp;quot;, &amp;quot;Marks&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee s = new Employee(68, &amp;quot;Dan&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee t = new Employee(117, &amp;quot;Shad&amp;quot;, &amp;quot;Fifty&amp;quot;, &amp;quot;Security&amp;quot;);&lt;br /&gt;
        Employee u = new Employee(108, &amp;quot;Tall&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
        Employee v = new Employee(109, &amp;quot;Short&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        Chart chart = new Chart(true);&lt;br /&gt;
        chart.addEdge(a, b);&lt;br /&gt;
        chart.addEdge(a, c);&lt;br /&gt;
        chart.addEdge(a, d);&lt;br /&gt;
        chart.addEdge(b, e);&lt;br /&gt;
        chart.addEdge(b, f);&lt;br /&gt;
        chart.addEdge(e, g);&lt;br /&gt;
        chart.addEdge(e, h);&lt;br /&gt;
        chart.addEdge(e, i);&lt;br /&gt;
        chart.addEdge(f, j);&lt;br /&gt;
        chart.addEdge(c, k);&lt;br /&gt;
        chart.addEdge(c, l);&lt;br /&gt;
        chart.addEdge(c, m);&lt;br /&gt;
        chart.addEdge(l, n);&lt;br /&gt;
        chart.addEdge(k, o);&lt;br /&gt;
        chart.addEdge(o, p);&lt;br /&gt;
        chart.addEdge(o, q);&lt;br /&gt;
        chart.addEdge(d, r);&lt;br /&gt;
        chart.addEdge(d, s);&lt;br /&gt;
        chart.addEdge(s, t);&lt;br /&gt;
        chart.addEdge(r, u);&lt;br /&gt;
        chart.addEdge(r, v);&lt;br /&gt;
        //System.out.println(a.firstName + &amp;quot; &amp;quot; + a.lastName + &amp;quot; &amp;quot; + a.jobTitle + &amp;quot; &amp;quot; + a.id);&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        //chart.depthFirstSearch(k);&lt;br /&gt;
&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        chart.breadthFirstSearch(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Find missing number==&lt;br /&gt;
You are given an array of positive numbers from 1 to n, such that all numbers from 1 to n are present except one number x. You have to find x. The input array is not sorted. Look at the below array and give it a try before checking the solution.&lt;br /&gt;
&lt;br /&gt;
The missing number = a sum of the provided array subtracted from a sum of indices + 2&lt;br /&gt;
example 1, 2, 4 missing is 3 = (1 +2 +3+4) - (1 +2+4)&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
public class MissingNum {&lt;br /&gt;
    public static int findMissing(List&amp;lt;Integer&amp;gt; l) {&lt;br /&gt;
        int tot_prov = 0;&lt;br /&gt;
        for (Integer integer : l) {&lt;br /&gt;
            tot_prov += integer;&lt;br /&gt;
        }&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; k = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;
        int tot_req = 0;&lt;br /&gt;
        for (int i = 0; i &amp;lt; l.size() + 2; i++) {&lt;br /&gt;
            k.add(i);&lt;br /&gt;
            tot_req += k.get(i);&lt;br /&gt;
        }&lt;br /&gt;
        return tot_req - tot_prov;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; g = Arrays.asList(8, 5, 3, 2, 4, 1, 7);&lt;br /&gt;
        System.out.println(&amp;quot;The missing number is &amp;quot; + findMissing(g));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Mergesort==&lt;br /&gt;
public class MergeSort {&lt;br /&gt;
&lt;br /&gt;
    private static Comparable[] aux;&lt;br /&gt;
&lt;br /&gt;
    public static void sort(Comparable[] a) {&lt;br /&gt;
        aux = new Comparable[a.length];&lt;br /&gt;
        sort(a, 0, a.length - 1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void merge(Comparable[] a, int lo, int mid, int hi) {&lt;br /&gt;
        assert isSorted(a, lo, mid);&lt;br /&gt;
        assert isSorted(a, mid + 1, hi);&lt;br /&gt;
        //copy for [] a to [] aux&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            aux[k] = a[k];&lt;br /&gt;
        }&lt;br /&gt;
        // the merging process&lt;br /&gt;
        // i is the first index of the first half of the array&lt;br /&gt;
        // j is the first index of the second half of the array&lt;br /&gt;
        int i = lo, j = mid + 1;&lt;br /&gt;
&lt;br /&gt;
        // for every value of k - the indices of [] a&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            /*Left half exhausted take from the right*/&lt;br /&gt;
            if (i &amp;gt; mid)&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Right half exhausted take from the left*/&lt;br /&gt;
            else if (j &amp;gt; hi)&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
                /*Current key on the right less than current key on the left take from the right*/&lt;br /&gt;
            else if (less(aux[j], aux[i]))&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Current key on the right greater than current key on the left take from the left */&lt;br /&gt;
            else&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
        }&lt;br /&gt;
        assert isSorted(a, lo, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void sort(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        if (hi &amp;lt;= lo)&lt;br /&gt;
            return;&lt;br /&gt;
        int mid = lo + (hi - lo) / 2;&lt;br /&gt;
        sort(a, lo, mid);&lt;br /&gt;
        sort(a, mid + 1, hi);&lt;br /&gt;
        merge(a, lo, mid, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean less(Comparable v, Comparable w) {&lt;br /&gt;
        return v.compareTo(w) &amp;lt; 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean isSorted(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        for (int i = lo + 1; i &amp;lt;= hi; i++)&lt;br /&gt;
            if (less(a[i], a[i - 1])) return false;&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void show(Comparable[] a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length; i++) {&lt;br /&gt;
            //System.out.print(a[i]);&lt;br /&gt;
            System.out.println(a[i]);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        // Comparable[] a = {&amp;quot;E&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;A&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;T&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
        Comparable[] aa = {&amp;quot;A&amp;quot;, &amp;quot;X&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;};&lt;br /&gt;
        Comparable[] bb = {&amp;quot;H&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;J&amp;quot;, &amp;quot;Y&amp;quot;, &amp;quot;Z&amp;quot;};&lt;br /&gt;
        /*Merge the two comparable arrays*/&lt;br /&gt;
        Comparable[] a = new Comparable[aa.length + bb.length];&lt;br /&gt;
        System.arraycopy(aa, 0, a, 0, aa.length);&lt;br /&gt;
        System.arraycopy(bb, 0, a, aa.length, bb.length);&lt;br /&gt;
&lt;br /&gt;
        MergeSort.sort(a);&lt;br /&gt;
        show(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Binary Search==&lt;br /&gt;
public class BinarySearch {&lt;br /&gt;
    public static int find(int[] arr, int target) {&lt;br /&gt;
        int left = 0;&lt;br /&gt;
        int right = arr.length - 1;&lt;br /&gt;
        while (left &amp;lt;= right) {&lt;br /&gt;
            int mid = left + (right - left);&lt;br /&gt;
            if (arr[mid] == target)&lt;br /&gt;
                return mid;&lt;br /&gt;
            if (arr[mid] &amp;lt; target) {&lt;br /&gt;
                left = mid + 1;&lt;br /&gt;
            } else {&lt;br /&gt;
                right = mid - 1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return -1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        int[] f = {1, 10, 20, 47, 59, 63, 75, 88, 99, 107, 120, 133, 155, 162, 176, 188, 199, 200, 210, 222, 223};&lt;br /&gt;
        int t = 162;&lt;br /&gt;
        System.out.println(find(f, t));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Validate Binary Search Tree==&lt;br /&gt;
&lt;br /&gt;
Given a Binary Tree, figure out whether it’s a Binary Search Tree. In a binary search tree, each node’s key value is smaller than the key value of all nodes in the right subtree, and is greater than the key values of all nodes in the left subtree. Below is an example of a binary tree that is a valid BST.&lt;br /&gt;
&lt;br /&gt;
public class BinarySearchTree {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int value) {&lt;br /&gt;
            this.value = value;&lt;br /&gt;
            this.left = null;&lt;br /&gt;
            this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public BinarySearchTree() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    public boolean isbst(Node root, Node l, Node r) {&lt;br /&gt;
        if (root == null)&lt;br /&gt;
            return true;&lt;br /&gt;
        if (l != null &amp;amp;&amp;amp; l.value &amp;gt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        if (r != null &amp;amp;&amp;amp; r.value &amp;lt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        return isbst(root.left, l, root) &amp;amp;&amp;amp; isbst(root.right, root, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        BinarySearchTree bt = new BinarySearchTree();&lt;br /&gt;
        bt.root = new Node(10);&lt;br /&gt;
        bt.root.left = new Node(5);&lt;br /&gt;
        bt.root.right = new Node(15);&lt;br /&gt;
        bt.root.left.left = new Node(4);&lt;br /&gt;
        bt.root.left.right = new Node(7);&lt;br /&gt;
        bt.root.right.left = new Node(13);&lt;br /&gt;
        bt.root.right.right = new Node(26);&lt;br /&gt;
        if (bt.isbst(bt.root, null, null))&lt;br /&gt;
            System.out.println(&amp;quot;Is a BST&amp;quot;);&lt;br /&gt;
        else&lt;br /&gt;
            System.out.println(&amp;quot;Is not a BST&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Determine if two integers add up to given number==&lt;br /&gt;
Given an array of integers and a value, determine if there are any two integers in the array whose sum is equal to the given value. Return true if the sum exists and return false if it does not. Consider this array and the target sums:&lt;br /&gt;
public class SumOfTwo {&lt;br /&gt;
        public static void main(String args[]) {&lt;br /&gt;
            Set&amp;lt;Integer&amp;gt; set = new HashSet&amp;lt;&amp;gt;(); /*Populate this Set with target values*/&lt;br /&gt;
            /*Array of target values*/&lt;br /&gt;
            int[] g = {5, 6, 8, 39, 9, 11, 20, 59, 10, 1};&lt;br /&gt;
            /*Insert the arrays values in the set*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                set.add(g[i]);&lt;br /&gt;
            }&lt;br /&gt;
            /*Set a target number to check for*/&lt;br /&gt;
            int y = 20;&lt;br /&gt;
            /*If there are a set of numbers that would add up, increment this counter*/&lt;br /&gt;
            int counter = 0;&lt;br /&gt;
            /*Pick up a number in the set by turns and assign it to x*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                int x = g[i];&lt;br /&gt;
                /*Check to see if the set contains target minus found number.*/&lt;br /&gt;
                if (set.contains(y - x)) { //if this is true&lt;br /&gt;
                    /*If so, increment the counter by 1*/&lt;br /&gt;
                    counter += 1;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (counter &amp;gt; 0) { /*Some numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            } else { /*No numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are no sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Merge two sorted lists==&lt;br /&gt;
Given two sorted linked lists, merge them so that the resulting linked list is also sorted. Consider two sorted linked lists and the merged list below them as an example.&lt;br /&gt;
import java.util.Stack;&lt;br /&gt;
/*This code merges two ordered lists into one keeping their increasing order&lt;br /&gt;
 * the lists used for testing are in the main function*/&lt;br /&gt;
public class MergeLists {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int data;&lt;br /&gt;
        Node next;&lt;br /&gt;
        Node(int z) {&lt;br /&gt;
            this.data = z;&lt;br /&gt;
            next = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads the values of a list and loads them on a Stack, then reads from the stack*/&lt;br /&gt;
    public static void loadInStack(Node f) {&lt;br /&gt;
        Stack&amp;lt;Integer&amp;gt; pack = new Stack&amp;lt;&amp;gt;();&lt;br /&gt;
        if (f == null)&lt;br /&gt;
            return;&lt;br /&gt;
        pack.push(f.data);&lt;br /&gt;
        loadInStack(f.next);&lt;br /&gt;
        System.out.println(pack);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function duplicates the provided list into another one*/&lt;br /&gt;
    public static void duplicateList(Node m) {&lt;br /&gt;
        Node hold = new Node(-1);&lt;br /&gt;
        if (m == null)&lt;br /&gt;
            return;&lt;br /&gt;
        hold.data = m.data;&lt;br /&gt;
        duplicateList(m.next);&lt;br /&gt;
        System.out.println(hold.data);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads from two lists picking the lesser of*/&lt;br /&gt;
    /*It takes in two lists as variables a and b*/&lt;br /&gt;
    public static void pickTwo(Node a, Node b) {&lt;br /&gt;
        /*This is a dummy list initialized with -1*/&lt;br /&gt;
        Node dummyList = new Node(-1);&lt;br /&gt;
        while (a != null &amp;amp;&amp;amp; b != null) {&lt;br /&gt;
            if (a.data &amp;lt;= b.data) {&lt;br /&gt;
                /*populate the dummy list from a, if smaller*/&lt;br /&gt;
                dummyList.data = a.data;&lt;br /&gt;
                /*Increment a*/&lt;br /&gt;
                a = a.next;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*populate the dummy list from b, if smaller*/&lt;br /&gt;
                dummyList.data = b.data;&lt;br /&gt;
                /*Increment b*/&lt;br /&gt;
                b = b.next;&lt;br /&gt;
            }&lt;br /&gt;
            /*Print when done*/&lt;br /&gt;
            System.out.print(dummyList.data + &amp;quot; -&amp;gt; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Node f = new Node(2);&lt;br /&gt;
        Node g = new Node(7);&lt;br /&gt;
        Node h = new Node(8);&lt;br /&gt;
        Node i = new Node(11);&lt;br /&gt;
&lt;br /&gt;
        f.next = g;&lt;br /&gt;
        g.next = h;&lt;br /&gt;
        h.next = i;&lt;br /&gt;
&lt;br /&gt;
        //printNodes(f);&lt;br /&gt;
&lt;br /&gt;
        Node k = new Node(4);&lt;br /&gt;
        Node l = new Node(6);&lt;br /&gt;
        Node m = new Node(9);&lt;br /&gt;
        Node n = new Node(10);&lt;br /&gt;
        Node o = new Node(12);&lt;br /&gt;
&lt;br /&gt;
        k.next = l;&lt;br /&gt;
        l.next = m;&lt;br /&gt;
        m.next = n;&lt;br /&gt;
        n.next = o;&lt;br /&gt;
&lt;br /&gt;
        //loadInStack(f);&lt;br /&gt;
        //duplicateList(k);&lt;br /&gt;
        pickTwo(f, k);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Reverse String==&lt;br /&gt;
&lt;br /&gt;
Reverse the order of words in a given sentence (an array of characters).&lt;br /&gt;
&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class ReverseString {&lt;br /&gt;
    public static void lizy(String[] curr) {&lt;br /&gt;
        LinkedList&amp;lt;String&amp;gt; y = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        for (int g = 0; g &amp;lt;= curr.length - 1; g++) {&lt;br /&gt;
            y.add(curr[g]);&lt;br /&gt;
        }&lt;br /&gt;
        Iterator i = y.descendingIterator();&lt;br /&gt;
        while (i.hasNext()) {&lt;br /&gt;
            System.out.print(i.next() + &amp;quot; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        String given = &amp;quot;Hello World&amp;quot;;&lt;br /&gt;
        String[] given_array = given.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String lineOfCurrencies = &amp;quot;USD JPY AUD SGD HKD CAD CHF GBP EURO INR&amp;quot;;&lt;br /&gt;
        String multispace = &amp;quot;Kenya    Uganda Tanzania   Burundi     Rwanda&amp;quot;;&lt;br /&gt;
        String[] currencies = lineOfCurrencies.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String[] ms = multispace.split(&amp;quot;\\s+&amp;quot;);&lt;br /&gt;
        ReverseString.lizy(given_array);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Level Order Traversal of Binary Tree==&lt;br /&gt;
&lt;br /&gt;
Given the root of a binary tree, display the node values at each level. Node values for all levels should be displayed on separate lines. Let’s take a look at the below binary tree.&lt;br /&gt;
&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class Lot {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int v) {&lt;br /&gt;
            this.value = v;&lt;br /&gt;
            this.left = this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public Lot() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    void lot() {&lt;br /&gt;
        LinkedList&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        //Queue&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;Node&amp;gt;();&lt;br /&gt;
        queue.add(root);&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Node tempNode = queue.removeFirst();&lt;br /&gt;
            //Node tempNode = queue.poll();&lt;br /&gt;
            System.out.print(tempNode.value + &amp;quot; &amp;quot;);&lt;br /&gt;
            if (tempNode.left != null)&lt;br /&gt;
                queue.add(tempNode.left);&lt;br /&gt;
            if (tempNode.right != null)&lt;br /&gt;
                queue.add(tempNode.right);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Lot l = new Lot();&lt;br /&gt;
        l.root = new Node(100);&lt;br /&gt;
        l.root.left = new Node(50);&lt;br /&gt;
        l.root.right = new Node(200);&lt;br /&gt;
        l.root.left.left = new Node(25);&lt;br /&gt;
        l.root.left.right = new Node(75);&lt;br /&gt;
        l.root.right.right = new Node(350);&lt;br /&gt;
        System.out.println(&amp;quot;Level order traversal is as follows: &amp;quot;);&lt;br /&gt;
        l.lot();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==String Segmentation==&lt;br /&gt;
You are given a dictionary of words and a large input string. You have to find out whether the input string can be completely segmented into the words of a given dictionary. The following two examples elaborate on the problem further.&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
&lt;br /&gt;
public class Dictionary {&lt;br /&gt;
    boolean pair(Set&amp;lt;String&amp;gt; dictionary, String a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length(); i++) {&lt;br /&gt;
            String first_word = a.substring(0, i);&lt;br /&gt;
            if (dictionary.contains(first_word)) {&lt;br /&gt;
                String second_word = a.substring(i);&lt;br /&gt;
                if (dictionary.contains(second_word) || pair(dictionary, second_word)) {&lt;br /&gt;
                    return true;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        Dictionary dictionary = new Dictionary();&lt;br /&gt;
        Set&amp;lt;String&amp;gt; dict = new HashSet&amp;lt;&amp;gt;();&lt;br /&gt;
        dict.add(&amp;quot;geo&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;science&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;politics&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;thermal&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;physical&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;mis&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;under&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;stand&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;understand&amp;quot;);&lt;br /&gt;
        String word = &amp;quot;misunderstand&amp;quot;;&lt;br /&gt;
        if (dictionary.pair(dict, word)) {&lt;br /&gt;
            System.out.println(&amp;quot;The test word &amp;quot; + word + &amp;quot; fits in two words in the dictionary&amp;quot;);&lt;br /&gt;
        } else {&lt;br /&gt;
            System.out.println(&amp;quot;The test word &amp;quot; + word + &amp;quot; does not make dictionary words&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Computing number combinations==&lt;br /&gt;
Suppose we have coin denominations of [1, 2, 5] and the total amount is 7. We can make changes in the following 6 ways:&lt;br /&gt;
&lt;br /&gt;
public class Combinations {&lt;br /&gt;
    static int changeOptions(int[] denominations, int amount) {&lt;br /&gt;
        int[] solution = new int[amount + 1];&lt;br /&gt;
        solution[0] = 1;&lt;br /&gt;
        for (int x : denominations) {&lt;br /&gt;
            for (int i = x; i &amp;lt; (amount + 1); ++i) {&lt;br /&gt;
                solution[i] += solution[i - x];&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return solution[solution.length - 1];&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        int[] denominations = new int[]{1, 2, 5, 10};&lt;br /&gt;
        int amount = 5;&lt;br /&gt;
        int result = changeOptions(denominations, amount);&lt;br /&gt;
        System.out.println(&amp;quot;There are &amp;quot; + result + &amp;quot; combinations in forming &amp;quot; + amount + &amp;quot; given the factors below: &amp;quot;);&lt;br /&gt;
        for (int denomination : denominations) {&lt;br /&gt;
            System.out.println(denomination);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Sum of two numbers==&lt;br /&gt;
Are there two numbers in the provided set that add up to the given number?&lt;br /&gt;
&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
&lt;br /&gt;
public class SumOfTwo {&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Set&amp;lt;Integer&amp;gt; set = new HashSet&amp;lt;&amp;gt;(); /*Populate this Set with target values*/&lt;br /&gt;
        /*Array of target values*/&lt;br /&gt;
        int[] g = {5, 6, 8, 39, 9, 11, 20, 59, 10, 1};&lt;br /&gt;
        /*Insert the arrays values in the set*/&lt;br /&gt;
        for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
            set.add(g[i]);&lt;br /&gt;
        }&lt;br /&gt;
        /*Set a target number to check for*/&lt;br /&gt;
        int y = 20;&lt;br /&gt;
        /*If there are a set of numbers that would add up, increment this counter*/&lt;br /&gt;
        int counter = 0;&lt;br /&gt;
        /*Pick up a number in the set by turns and assign it to x*/&lt;br /&gt;
        for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
            int x = g[i];&lt;br /&gt;
            /*Check to see if the set contains target minus found number.*/&lt;br /&gt;
            if (set.contains(y - x)) { //if this is true&lt;br /&gt;
                /*If so, increment the counter by 1*/&lt;br /&gt;
                counter += 1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        if (counter &amp;gt; 0) { /*Some numbers add up*/&lt;br /&gt;
            System.out.println(&amp;quot;There are sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
        } else { /*No numbers add up*/&lt;br /&gt;
            System.out.println(&amp;quot;There are no sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Find two numbers that add up==&lt;br /&gt;
You have a set of numbers and another number (target) that is comprised of two numbers in the set added up. How do you find if there are two numbers in the set that add up?&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
&lt;br /&gt;
public class TwoThatAdd {&lt;br /&gt;
    static int[] showAdded(int[] set, int target) {&lt;br /&gt;
        Arrays.sort(set);&lt;br /&gt;
        int left = 0;&lt;br /&gt;
        int right = (set.length - 1);&lt;br /&gt;
        while (left &amp;lt; right) {&lt;br /&gt;
            if (set[left] + set[right] == target) {&lt;br /&gt;
                return new int[]{set[left], set[right]};&lt;br /&gt;
            } else if (set[left] + set[right] &amp;lt; target) {&lt;br /&gt;
                left++;&lt;br /&gt;
            } else {&lt;br /&gt;
                right--;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return new int[]{};&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        int[] options = {2, 4, 6, 7, 11, 13, 16};&lt;br /&gt;
        int target = 18;&lt;br /&gt;
        System.out.println(Arrays.toString(TwoThatAdd.showAdded(options, target)));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=Algorithms&amp;diff=153</id>
		<title>Algorithms</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=Algorithms&amp;diff=153"/>
		<updated>2022-10-27T15:34:11Z</updated>

		<summary type="html">&lt;p&gt;Leksy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below is a collection of algorithms. The title of the algorithm describes (as much as possible) what the algorithm does&lt;br /&gt;
&lt;br /&gt;
==Java Graph Implementation with Search Methods==&lt;br /&gt;
&lt;br /&gt;
The algorithm below implements the organization chart below:&lt;br /&gt;
&lt;br /&gt;
Jimbo Jones is employee id 38 and is the President.&lt;br /&gt;
&lt;br /&gt;
Mike McCobb, id 39, is a VP and reports to Jimbo Jones.&lt;br /&gt;
&lt;br /&gt;
Elda Two, id 43, is a VP and reports to Jimbo Jones.&lt;br /&gt;
&lt;br /&gt;
Simon Sneath, id 48, is a VP and reports to Jimbo Jones.&lt;br /&gt;
&lt;br /&gt;
Tim Scott, id 56, is a Manager and reports to Mike McCobb.&lt;br /&gt;
&lt;br /&gt;
Bob Tilman, id 58, is a Manager and reports to Mike McCobb.&lt;br /&gt;
&lt;br /&gt;
Andrew Cole, id 78, is an Analyst and reports to Tim Scott.&lt;br /&gt;
&lt;br /&gt;
Matt Lemon, id 83, is an Analyst and reports to Tim Scott.&lt;br /&gt;
&lt;br /&gt;
Chris Lock, id 88, is an Analyst and reports to Tim Scott.&lt;br /&gt;
&lt;br /&gt;
Agnes White, id 71, is an Accountant and reports to Bob Tilman.&lt;br /&gt;
&lt;br /&gt;
George Mills, id 61, is a Manager and reports to Elda Two.&lt;br /&gt;
&lt;br /&gt;
Thomas Wells, id 59, is a Manager and reports to Elda Two.&lt;br /&gt;
&lt;br /&gt;
Zip Two, id 63, is Manager and also reports to Elda Two.&lt;br /&gt;
&lt;br /&gt;
Rasta Him, id 73, is a Technician and reports to Thomas Wells.&lt;br /&gt;
&lt;br /&gt;
Claire Collins, id 89, is a Supervisor and reports to George Mills.&lt;br /&gt;
&lt;br /&gt;
Jim Four, id 95, is a Receptionist and reports to Claire Collins.&lt;br /&gt;
&lt;br /&gt;
Tom Flat, id 104, is a Receptionist who reports to Claire Collins.&lt;br /&gt;
&lt;br /&gt;
Grace Marks, id 64, is a Manager and reports to Simon Sneath.&lt;br /&gt;
&lt;br /&gt;
Dan Four, id 68, is a Manager and reports to Simon Sneath.&lt;br /&gt;
&lt;br /&gt;
Shad Fifty, id 117, is in Security and reports to Dan Four.&lt;br /&gt;
&lt;br /&gt;
Tall Nephew, id 108, is in Legal and reports to Grace Marks.&lt;br /&gt;
&lt;br /&gt;
Short Nephew, id 109, is in Legal and reports to Grace Marks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class Chart {&lt;br /&gt;
    static class Employee {&lt;br /&gt;
        int id;&lt;br /&gt;
        String firstName;&lt;br /&gt;
        String lastName;&lt;br /&gt;
        String jobTitle;&lt;br /&gt;
        boolean mapped;&lt;br /&gt;
&lt;br /&gt;
        Employee(int id, String fn, String ln, String jt) {&lt;br /&gt;
            this.id = id;&lt;br /&gt;
            this.jobTitle = jt;&lt;br /&gt;
            this.firstName = fn;&lt;br /&gt;
            this.lastName = ln;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void map() {&lt;br /&gt;
            mapped = true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void unmap() {&lt;br /&gt;
            mapped = false;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private final HashMap&amp;lt;Employee, LinkedList&amp;lt;Employee&amp;gt;&amp;gt; assignment;&lt;br /&gt;
&lt;br /&gt;
    public Chart(boolean directed) {&lt;br /&gt;
        assignment = new HashMap&amp;lt;&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdgeHelper(Employee a, Employee b) {&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; e = assignment.get(a);&lt;br /&gt;
        if (e != null) {&lt;br /&gt;
            assignment.remove(b);&lt;br /&gt;
        } else&lt;br /&gt;
            e = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        e.add(b);&lt;br /&gt;
        assignment.put(a, e);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdge(Employee boss, Employee subordinate) {&lt;br /&gt;
        if (!assignment.containsKey(boss))&lt;br /&gt;
            assignment.put(boss, null);&lt;br /&gt;
        if (!assignment.containsKey(subordinate))&lt;br /&gt;
            assignment.put(subordinate, null);&lt;br /&gt;
        addEdgeHelper(boss, subordinate);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void depthFirstSearch(Employee employee) {&lt;br /&gt;
        employee.map();&lt;br /&gt;
        System.out.println(employee.firstName + &amp;quot; &amp;quot; + employee.lastName + &amp;quot; is a &amp;quot; + employee.jobTitle);&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; neighbors = assignment.get(employee);&lt;br /&gt;
        if (neighbors == null)&lt;br /&gt;
            return;&lt;br /&gt;
        for (Employee e : neighbors) {&lt;br /&gt;
            if (!e.mapped)&lt;br /&gt;
                depthFirstSearch(e);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void breadthFirstSearch(Employee employee) {&lt;br /&gt;
        /*Check if target item is null - if so quit*/&lt;br /&gt;
        if (employee == null)&lt;br /&gt;
            return;&lt;br /&gt;
        /*Declare a queue using LinkedList and add the target item*/&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        queue.add(employee);&lt;br /&gt;
        /*As long as the queue has data get the first in item .removeFirst*/&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Employee currentFirst = queue.removeFirst();&lt;br /&gt;
            /*If visited move on*/&lt;br /&gt;
            if (currentFirst.mapped) {&lt;br /&gt;
                continue;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*else visit it and print it*/&lt;br /&gt;
                currentFirst.map();&lt;br /&gt;
                System.out.println(currentFirst.id + &amp;quot;: &amp;quot; + currentFirst.firstName + &amp;quot; &amp;quot; + currentFirst.lastName + &amp;quot; - &amp;quot; + currentFirst.jobTitle);&lt;br /&gt;
            }&lt;br /&gt;
            /*Find neighbors of the current item*/&lt;br /&gt;
            LinkedList&amp;lt;Employee&amp;gt; allNeighbors = assignment.get(currentFirst);&lt;br /&gt;
            /*If there are none move on*/&lt;br /&gt;
            if (allNeighbors == null)&lt;br /&gt;
                continue;&lt;br /&gt;
            /*else if there are some and not visited, add them to the queue and the process starts over*/&lt;br /&gt;
            for (Employee e : allNeighbors) {&lt;br /&gt;
                if (!e.mapped)&lt;br /&gt;
                    queue.add(e);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void resetMapping() {&lt;br /&gt;
        for (Employee e : assignment.keySet()) {&lt;br /&gt;
            e.unmap();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Employee a = new Employee(38, &amp;quot;Jimbo&amp;quot;, &amp;quot;Jones&amp;quot;, &amp;quot;President&amp;quot;);&lt;br /&gt;
        Employee b = new Employee(39, &amp;quot;Mike&amp;quot;, &amp;quot;McCobb&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee c = new Employee(43, &amp;quot;Elda&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee d = new Employee(48, &amp;quot;Simon&amp;quot;, &amp;quot;Sneeth&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee e = new Employee(56, &amp;quot;Tim&amp;quot;, &amp;quot;Scott&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee f = new Employee(58, &amp;quot;Bob&amp;quot;, &amp;quot;Tilman&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee g = new Employee(78, &amp;quot;Andrew&amp;quot;, &amp;quot;Cole&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee h = new Employee(83, &amp;quot;Matt&amp;quot;, &amp;quot;Lemon&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee i = new Employee(88, &amp;quot;Chris&amp;quot;, &amp;quot;Lock&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee j = new Employee(71, &amp;quot;Agnes&amp;quot;, &amp;quot;White&amp;quot;, &amp;quot;Accountant&amp;quot;);&lt;br /&gt;
        Employee k = new Employee(61, &amp;quot;George&amp;quot;, &amp;quot;Mills&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee l = new Employee(59, &amp;quot;Thomas&amp;quot;, &amp;quot;Wells&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee m = new Employee(63, &amp;quot;Zip&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee n = new Employee(73, &amp;quot;Rasta&amp;quot;, &amp;quot;Him&amp;quot;, &amp;quot;Technician&amp;quot;);&lt;br /&gt;
        Employee o = new Employee(89, &amp;quot;Claire&amp;quot;, &amp;quot;Collins&amp;quot;, &amp;quot;Supervisor&amp;quot;);&lt;br /&gt;
        Employee p = new Employee(95, &amp;quot;Jim&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee q = new Employee(104, &amp;quot;Tom&amp;quot;, &amp;quot;Flat&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee r = new Employee(64, &amp;quot;Grace&amp;quot;, &amp;quot;Marks&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee s = new Employee(68, &amp;quot;Dan&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee t = new Employee(117, &amp;quot;Shad&amp;quot;, &amp;quot;Fifty&amp;quot;, &amp;quot;Security&amp;quot;);&lt;br /&gt;
        Employee u = new Employee(108, &amp;quot;Tall&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
        Employee v = new Employee(109, &amp;quot;Short&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        Chart chart = new Chart(true);&lt;br /&gt;
        chart.addEdge(a, b);&lt;br /&gt;
        chart.addEdge(a, c);&lt;br /&gt;
        chart.addEdge(a, d);&lt;br /&gt;
        chart.addEdge(b, e);&lt;br /&gt;
        chart.addEdge(b, f);&lt;br /&gt;
        chart.addEdge(e, g);&lt;br /&gt;
        chart.addEdge(e, h);&lt;br /&gt;
        chart.addEdge(e, i);&lt;br /&gt;
        chart.addEdge(f, j);&lt;br /&gt;
        chart.addEdge(c, k);&lt;br /&gt;
        chart.addEdge(c, l);&lt;br /&gt;
        chart.addEdge(c, m);&lt;br /&gt;
        chart.addEdge(l, n);&lt;br /&gt;
        chart.addEdge(k, o);&lt;br /&gt;
        chart.addEdge(o, p);&lt;br /&gt;
        chart.addEdge(o, q);&lt;br /&gt;
        chart.addEdge(d, r);&lt;br /&gt;
        chart.addEdge(d, s);&lt;br /&gt;
        chart.addEdge(s, t);&lt;br /&gt;
        chart.addEdge(r, u);&lt;br /&gt;
        chart.addEdge(r, v);&lt;br /&gt;
        //System.out.println(a.firstName + &amp;quot; &amp;quot; + a.lastName + &amp;quot; &amp;quot; + a.jobTitle + &amp;quot; &amp;quot; + a.id);&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        //chart.depthFirstSearch(k);&lt;br /&gt;
&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        chart.breadthFirstSearch(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Find missing number==&lt;br /&gt;
You are given an array of positive numbers from 1 to n, such that all numbers from 1 to n are present except one number x. You have to find x. The input array is not sorted. Look at the below array and give it a try before checking the solution.&lt;br /&gt;
&lt;br /&gt;
The missing number = a sum of the provided array subtracted from a sum of indices + 2&lt;br /&gt;
example 1, 2, 4 missing is 3 = (1 +2 +3+4) - (1 +2+4)&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
public class MissingNum {&lt;br /&gt;
    public static int findMissing(List&amp;lt;Integer&amp;gt; l) {&lt;br /&gt;
        int tot_prov = 0;&lt;br /&gt;
        for (Integer integer : l) {&lt;br /&gt;
            tot_prov += integer;&lt;br /&gt;
        }&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; k = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;
        int tot_req = 0;&lt;br /&gt;
        for (int i = 0; i &amp;lt; l.size() + 2; i++) {&lt;br /&gt;
            k.add(i);&lt;br /&gt;
            tot_req += k.get(i);&lt;br /&gt;
        }&lt;br /&gt;
        return tot_req - tot_prov;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; g = Arrays.asList(8, 5, 3, 2, 4, 1, 7);&lt;br /&gt;
        System.out.println(&amp;quot;The missing number is &amp;quot; + findMissing(g));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Mergesort==&lt;br /&gt;
public class MergeSort {&lt;br /&gt;
&lt;br /&gt;
    private static Comparable[] aux;&lt;br /&gt;
&lt;br /&gt;
    public static void sort(Comparable[] a) {&lt;br /&gt;
        aux = new Comparable[a.length];&lt;br /&gt;
        sort(a, 0, a.length - 1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void merge(Comparable[] a, int lo, int mid, int hi) {&lt;br /&gt;
        assert isSorted(a, lo, mid);&lt;br /&gt;
        assert isSorted(a, mid + 1, hi);&lt;br /&gt;
        //copy for [] a to [] aux&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            aux[k] = a[k];&lt;br /&gt;
        }&lt;br /&gt;
        // the merging process&lt;br /&gt;
        // i is the first index of the first half of the array&lt;br /&gt;
        // j is the first index of the second half of the array&lt;br /&gt;
        int i = lo, j = mid + 1;&lt;br /&gt;
&lt;br /&gt;
        // for every value of k - the indices of [] a&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            /*Left half exhausted take from the right*/&lt;br /&gt;
            if (i &amp;gt; mid)&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Right half exhausted take from the left*/&lt;br /&gt;
            else if (j &amp;gt; hi)&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
                /*Current key on the right less than current key on the left take from the right*/&lt;br /&gt;
            else if (less(aux[j], aux[i]))&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Current key on the right greater than current key on the left take from the left */&lt;br /&gt;
            else&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
        }&lt;br /&gt;
        assert isSorted(a, lo, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void sort(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        if (hi &amp;lt;= lo)&lt;br /&gt;
            return;&lt;br /&gt;
        int mid = lo + (hi - lo) / 2;&lt;br /&gt;
        sort(a, lo, mid);&lt;br /&gt;
        sort(a, mid + 1, hi);&lt;br /&gt;
        merge(a, lo, mid, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean less(Comparable v, Comparable w) {&lt;br /&gt;
        return v.compareTo(w) &amp;lt; 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean isSorted(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        for (int i = lo + 1; i &amp;lt;= hi; i++)&lt;br /&gt;
            if (less(a[i], a[i - 1])) return false;&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void show(Comparable[] a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length; i++) {&lt;br /&gt;
            //System.out.print(a[i]);&lt;br /&gt;
            System.out.println(a[i]);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        // Comparable[] a = {&amp;quot;E&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;A&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;T&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
        Comparable[] aa = {&amp;quot;A&amp;quot;, &amp;quot;X&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;};&lt;br /&gt;
        Comparable[] bb = {&amp;quot;H&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;J&amp;quot;, &amp;quot;Y&amp;quot;, &amp;quot;Z&amp;quot;};&lt;br /&gt;
        /*Merge the two comparable arrays*/&lt;br /&gt;
        Comparable[] a = new Comparable[aa.length + bb.length];&lt;br /&gt;
        System.arraycopy(aa, 0, a, 0, aa.length);&lt;br /&gt;
        System.arraycopy(bb, 0, a, aa.length, bb.length);&lt;br /&gt;
&lt;br /&gt;
        MergeSort.sort(a);&lt;br /&gt;
        show(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Binary Search==&lt;br /&gt;
public class BinarySearch {&lt;br /&gt;
    public static int find(int[] arr, int target) {&lt;br /&gt;
        int left = 0;&lt;br /&gt;
        int right = arr.length - 1;&lt;br /&gt;
        while (left &amp;lt;= right) {&lt;br /&gt;
            int mid = left + (right - left);&lt;br /&gt;
            if (arr[mid] == target)&lt;br /&gt;
                return mid;&lt;br /&gt;
            if (arr[mid] &amp;lt; target) {&lt;br /&gt;
                left = mid + 1;&lt;br /&gt;
            } else {&lt;br /&gt;
                right = mid - 1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return -1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        int[] f = {1, 10, 20, 47, 59, 63, 75, 88, 99, 107, 120, 133, 155, 162, 176, 188, 199, 200, 210, 222, 223};&lt;br /&gt;
        int t = 162;&lt;br /&gt;
        System.out.println(find(f, t));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Validate Binary Search Tree==&lt;br /&gt;
&lt;br /&gt;
Given a Binary Tree, figure out whether it’s a Binary Search Tree. In a binary search tree, each node’s key value is smaller than the key value of all nodes in the right subtree, and is greater than the key values of all nodes in the left subtree. Below is an example of a binary tree that is a valid BST.&lt;br /&gt;
&lt;br /&gt;
public class BinarySearchTree {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int value) {&lt;br /&gt;
            this.value = value;&lt;br /&gt;
            this.left = null;&lt;br /&gt;
            this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public BinarySearchTree() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    public boolean isbst(Node root, Node l, Node r) {&lt;br /&gt;
        if (root == null)&lt;br /&gt;
            return true;&lt;br /&gt;
        if (l != null &amp;amp;&amp;amp; l.value &amp;gt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        if (r != null &amp;amp;&amp;amp; r.value &amp;lt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        return isbst(root.left, l, root) &amp;amp;&amp;amp; isbst(root.right, root, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        BinarySearchTree bt = new BinarySearchTree();&lt;br /&gt;
        bt.root = new Node(10);&lt;br /&gt;
        bt.root.left = new Node(5);&lt;br /&gt;
        bt.root.right = new Node(15);&lt;br /&gt;
        bt.root.left.left = new Node(4);&lt;br /&gt;
        bt.root.left.right = new Node(7);&lt;br /&gt;
        bt.root.right.left = new Node(13);&lt;br /&gt;
        bt.root.right.right = new Node(26);&lt;br /&gt;
        if (bt.isbst(bt.root, null, null))&lt;br /&gt;
            System.out.println(&amp;quot;Is a BST&amp;quot;);&lt;br /&gt;
        else&lt;br /&gt;
            System.out.println(&amp;quot;Is not a BST&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Determine if two integers add up to given number==&lt;br /&gt;
Given an array of integers and a value, determine if there are any two integers in the array whose sum is equal to the given value. Return true if the sum exists and return false if it does not. Consider this array and the target sums:&lt;br /&gt;
public class SumOfTwo {&lt;br /&gt;
        public static void main(String args[]) {&lt;br /&gt;
            Set&amp;lt;Integer&amp;gt; set = new HashSet&amp;lt;&amp;gt;(); /*Populate this Set with target values*/&lt;br /&gt;
            /*Array of target values*/&lt;br /&gt;
            int[] g = {5, 6, 8, 39, 9, 11, 20, 59, 10, 1};&lt;br /&gt;
            /*Insert the arrays values in the set*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                set.add(g[i]);&lt;br /&gt;
            }&lt;br /&gt;
            /*Set a target number to check for*/&lt;br /&gt;
            int y = 20;&lt;br /&gt;
            /*If there are a set of numbers that would add up, increment this counter*/&lt;br /&gt;
            int counter = 0;&lt;br /&gt;
            /*Pick up a number in the set by turns and assign it to x*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                int x = g[i];&lt;br /&gt;
                /*Check to see if the set contains target minus found number.*/&lt;br /&gt;
                if (set.contains(y - x)) { //if this is true&lt;br /&gt;
                    /*If so, increment the counter by 1*/&lt;br /&gt;
                    counter += 1;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (counter &amp;gt; 0) { /*Some numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            } else { /*No numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are no sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Merge two sorted lists==&lt;br /&gt;
Given two sorted linked lists, merge them so that the resulting linked list is also sorted. Consider two sorted linked lists and the merged list below them as an example.&lt;br /&gt;
import java.util.Stack;&lt;br /&gt;
/*This code merges two ordered lists into one keeping their increasing order&lt;br /&gt;
 * the lists used for testing are in the main function*/&lt;br /&gt;
public class MergeLists {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int data;&lt;br /&gt;
        Node next;&lt;br /&gt;
        Node(int z) {&lt;br /&gt;
            this.data = z;&lt;br /&gt;
            next = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads the values of a list and loads them on a Stack, then reads from the stack*/&lt;br /&gt;
    public static void loadInStack(Node f) {&lt;br /&gt;
        Stack&amp;lt;Integer&amp;gt; pack = new Stack&amp;lt;&amp;gt;();&lt;br /&gt;
        if (f == null)&lt;br /&gt;
            return;&lt;br /&gt;
        pack.push(f.data);&lt;br /&gt;
        loadInStack(f.next);&lt;br /&gt;
        System.out.println(pack);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function duplicates the provided list into another one*/&lt;br /&gt;
    public static void duplicateList(Node m) {&lt;br /&gt;
        Node hold = new Node(-1);&lt;br /&gt;
        if (m == null)&lt;br /&gt;
            return;&lt;br /&gt;
        hold.data = m.data;&lt;br /&gt;
        duplicateList(m.next);&lt;br /&gt;
        System.out.println(hold.data);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads from two lists picking the lesser of*/&lt;br /&gt;
    /*It takes in two lists as variables a and b*/&lt;br /&gt;
    public static void pickTwo(Node a, Node b) {&lt;br /&gt;
        /*This is a dummy list initialized with -1*/&lt;br /&gt;
        Node dummyList = new Node(-1);&lt;br /&gt;
        while (a != null &amp;amp;&amp;amp; b != null) {&lt;br /&gt;
            if (a.data &amp;lt;= b.data) {&lt;br /&gt;
                /*populate the dummy list from a, if smaller*/&lt;br /&gt;
                dummyList.data = a.data;&lt;br /&gt;
                /*Increment a*/&lt;br /&gt;
                a = a.next;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*populate the dummy list from b, if smaller*/&lt;br /&gt;
                dummyList.data = b.data;&lt;br /&gt;
                /*Increment b*/&lt;br /&gt;
                b = b.next;&lt;br /&gt;
            }&lt;br /&gt;
            /*Print when done*/&lt;br /&gt;
            System.out.print(dummyList.data + &amp;quot; -&amp;gt; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Node f = new Node(2);&lt;br /&gt;
        Node g = new Node(7);&lt;br /&gt;
        Node h = new Node(8);&lt;br /&gt;
        Node i = new Node(11);&lt;br /&gt;
&lt;br /&gt;
        f.next = g;&lt;br /&gt;
        g.next = h;&lt;br /&gt;
        h.next = i;&lt;br /&gt;
&lt;br /&gt;
        //printNodes(f);&lt;br /&gt;
&lt;br /&gt;
        Node k = new Node(4);&lt;br /&gt;
        Node l = new Node(6);&lt;br /&gt;
        Node m = new Node(9);&lt;br /&gt;
        Node n = new Node(10);&lt;br /&gt;
        Node o = new Node(12);&lt;br /&gt;
&lt;br /&gt;
        k.next = l;&lt;br /&gt;
        l.next = m;&lt;br /&gt;
        m.next = n;&lt;br /&gt;
        n.next = o;&lt;br /&gt;
&lt;br /&gt;
        //loadInStack(f);&lt;br /&gt;
        //duplicateList(k);&lt;br /&gt;
        pickTwo(f, k);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Reverse String==&lt;br /&gt;
&lt;br /&gt;
Reverse the order of words in a given sentence (an array of characters).&lt;br /&gt;
&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class ReverseString {&lt;br /&gt;
    public static void lizy(String[] curr) {&lt;br /&gt;
        LinkedList&amp;lt;String&amp;gt; y = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        for (int g = 0; g &amp;lt;= curr.length - 1; g++) {&lt;br /&gt;
            y.add(curr[g]);&lt;br /&gt;
        }&lt;br /&gt;
        Iterator i = y.descendingIterator();&lt;br /&gt;
        while (i.hasNext()) {&lt;br /&gt;
            System.out.print(i.next() + &amp;quot; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        String given = &amp;quot;Hello World&amp;quot;;&lt;br /&gt;
        String[] given_array = given.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String lineOfCurrencies = &amp;quot;USD JPY AUD SGD HKD CAD CHF GBP EURO INR&amp;quot;;&lt;br /&gt;
        String multispace = &amp;quot;Kenya    Uganda Tanzania   Burundi     Rwanda&amp;quot;;&lt;br /&gt;
        String[] currencies = lineOfCurrencies.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String[] ms = multispace.split(&amp;quot;\\s+&amp;quot;);&lt;br /&gt;
        ReverseString.lizy(given_array);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Level Order Traversal of Binary Tree==&lt;br /&gt;
&lt;br /&gt;
Given the root of a binary tree, display the node values at each level. Node values for all levels should be displayed on separate lines. Let’s take a look at the below binary tree.&lt;br /&gt;
&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class Lot {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int v) {&lt;br /&gt;
            this.value = v;&lt;br /&gt;
            this.left = this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public Lot() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    void lot() {&lt;br /&gt;
        LinkedList&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        //Queue&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;Node&amp;gt;();&lt;br /&gt;
        queue.add(root);&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Node tempNode = queue.removeFirst();&lt;br /&gt;
            //Node tempNode = queue.poll();&lt;br /&gt;
            System.out.print(tempNode.value + &amp;quot; &amp;quot;);&lt;br /&gt;
            if (tempNode.left != null)&lt;br /&gt;
                queue.add(tempNode.left);&lt;br /&gt;
            if (tempNode.right != null)&lt;br /&gt;
                queue.add(tempNode.right);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Lot l = new Lot();&lt;br /&gt;
        l.root = new Node(100);&lt;br /&gt;
        l.root.left = new Node(50);&lt;br /&gt;
        l.root.right = new Node(200);&lt;br /&gt;
        l.root.left.left = new Node(25);&lt;br /&gt;
        l.root.left.right = new Node(75);&lt;br /&gt;
        l.root.right.right = new Node(350);&lt;br /&gt;
        System.out.println(&amp;quot;Level order traversal is as follows: &amp;quot;);&lt;br /&gt;
        l.lot();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==String Segmentation==&lt;br /&gt;
You are given a dictionary of words and a large input string. You have to find out whether the input string can be completely segmented into the words of a given dictionary. The following two examples elaborate on the problem further.&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
&lt;br /&gt;
public class Dictionary {&lt;br /&gt;
    boolean pair(Set&amp;lt;String&amp;gt; dictionary, String a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length(); i++) {&lt;br /&gt;
            String first_word = a.substring(0, i);&lt;br /&gt;
            if (dictionary.contains(first_word)) {&lt;br /&gt;
                String second_word = a.substring(i);&lt;br /&gt;
                if (dictionary.contains(second_word) || pair(dictionary, second_word)) {&lt;br /&gt;
                    return true;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        Dictionary dictionary = new Dictionary();&lt;br /&gt;
        Set&amp;lt;String&amp;gt; dict = new HashSet&amp;lt;&amp;gt;();&lt;br /&gt;
        dict.add(&amp;quot;geo&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;science&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;politics&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;thermal&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;physical&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;mis&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;under&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;stand&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;understand&amp;quot;);&lt;br /&gt;
        String word = &amp;quot;misunderstand&amp;quot;;&lt;br /&gt;
        if (dictionary.pair(dict, word)) {&lt;br /&gt;
            System.out.println(&amp;quot;The test word &amp;quot; + word + &amp;quot; fits in two words in the dictionary&amp;quot;);&lt;br /&gt;
        } else {&lt;br /&gt;
            System.out.println(&amp;quot;The test word &amp;quot; + word + &amp;quot; does not make dictionary words&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Computing number combinations==&lt;br /&gt;
Suppose we have coin denominations of [1, 2, 5] and the total amount is 7. We can make changes in the following 6 ways:&lt;br /&gt;
&lt;br /&gt;
public class Combinations {&lt;br /&gt;
    static int changeOptions(int[] denominations, int amount) {&lt;br /&gt;
        int[] solution = new int[amount + 1];&lt;br /&gt;
        solution[0] = 1;&lt;br /&gt;
        for (int x : denominations) {&lt;br /&gt;
            for (int i = x; i &amp;lt; (amount + 1); ++i) {&lt;br /&gt;
                solution[i] += solution[i - x];&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return solution[solution.length - 1];&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        int[] denominations = new int[]{1, 2, 5, 10};&lt;br /&gt;
        int amount = 5;&lt;br /&gt;
        int result = changeOptions(denominations, amount);&lt;br /&gt;
        System.out.println(&amp;quot;There are &amp;quot; + result + &amp;quot; combinations in forming &amp;quot; + amount + &amp;quot; given the factors below: &amp;quot;);&lt;br /&gt;
        for (int denomination : denominations) {&lt;br /&gt;
            System.out.println(denomination);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Sum of two numbers==&lt;br /&gt;
Are there two numbers in the provided set that add up to the given number?&lt;br /&gt;
&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
&lt;br /&gt;
public class SumOfTwo {&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Set&amp;lt;Integer&amp;gt; set = new HashSet&amp;lt;&amp;gt;(); /*Populate this Set with target values*/&lt;br /&gt;
        /*Array of target values*/&lt;br /&gt;
        int[] g = {5, 6, 8, 39, 9, 11, 20, 59, 10, 1};&lt;br /&gt;
        /*Insert the arrays values in the set*/&lt;br /&gt;
        for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
            set.add(g[i]);&lt;br /&gt;
        }&lt;br /&gt;
        /*Set a target number to check for*/&lt;br /&gt;
        int y = 20;&lt;br /&gt;
        /*If there are a set of numbers that would add up, increment this counter*/&lt;br /&gt;
        int counter = 0;&lt;br /&gt;
        /*Pick up a number in the set by turns and assign it to x*/&lt;br /&gt;
        for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
            int x = g[i];&lt;br /&gt;
            /*Check to see if the set contains target minus found number.*/&lt;br /&gt;
            if (set.contains(y - x)) { //if this is true&lt;br /&gt;
                /*If so, increment the counter by 1*/&lt;br /&gt;
                counter += 1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        if (counter &amp;gt; 0) { /*Some numbers add up*/&lt;br /&gt;
            System.out.println(&amp;quot;There are sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
        } else { /*No numbers add up*/&lt;br /&gt;
            System.out.println(&amp;quot;There are no sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Find two numbers that add up==&lt;br /&gt;
You have a set of numbers and another number (target) that is comprised of two numbers in the set added up. How do you find if there are two numbers in the set that add up?&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
&lt;br /&gt;
public class TwoThatAdd {&lt;br /&gt;
    static int[] showAdded(int[] set, int target) {&lt;br /&gt;
        Arrays.sort(set);&lt;br /&gt;
        int left = 0;&lt;br /&gt;
        int right = (set.length - 1);&lt;br /&gt;
        while (left &amp;lt; right) {&lt;br /&gt;
            if (set[left] + set[right] == target) {&lt;br /&gt;
                return new int[]{set[left], set[right]};&lt;br /&gt;
            } else if (set[left] + set[right] &amp;lt; target) {&lt;br /&gt;
                left++;&lt;br /&gt;
            } else {&lt;br /&gt;
                right--;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return new int[]{};&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        int[] options = {2, 4, 6, 7, 11, 13, 16};&lt;br /&gt;
        int target = 18;&lt;br /&gt;
        System.out.println(Arrays.toString(TwoThatAdd.showAdded(options, target)));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=Algorithms&amp;diff=152</id>
		<title>Algorithms</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=Algorithms&amp;diff=152"/>
		<updated>2022-10-26T05:47:42Z</updated>

		<summary type="html">&lt;p&gt;Leksy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Java Graph Implementation with Search Methods==&lt;br /&gt;
&lt;br /&gt;
The algorithm below implements the organization chart below:&lt;br /&gt;
&lt;br /&gt;
Jimbo Jones is employee id 38 and is the President.&lt;br /&gt;
&lt;br /&gt;
Mike McCobb, id 39, is a VP and reports to Jimbo Jones.&lt;br /&gt;
&lt;br /&gt;
Elda Two, id 43, is a VP and reports to Jimbo Jones.&lt;br /&gt;
&lt;br /&gt;
Simon Sneath, id 48, is a VP and reports to Jimbo Jones.&lt;br /&gt;
&lt;br /&gt;
Tim Scott, id 56, is a Manager and reports to Mike McCobb.&lt;br /&gt;
&lt;br /&gt;
Bob Tilman, id 58, is a Manager and reports to Mike McCobb.&lt;br /&gt;
&lt;br /&gt;
Andrew Cole, id 78, is an Analyst and reports to Tim Scott.&lt;br /&gt;
&lt;br /&gt;
Matt Lemon, id 83, is an Analyst and reports to Tim Scott.&lt;br /&gt;
&lt;br /&gt;
Chris Lock, id 88, is an Analyst and reports to Tim Scott.&lt;br /&gt;
&lt;br /&gt;
Agnes White, id 71, is an Accountant and reports to Bob Tilman.&lt;br /&gt;
&lt;br /&gt;
George Mills, id 61, is a Manager and reports to Elda Two.&lt;br /&gt;
&lt;br /&gt;
Thomas Wells, id 59, is a Manager and reports to Elda Two.&lt;br /&gt;
&lt;br /&gt;
Zip Two, id 63, is Manager and also reports to Elda Two.&lt;br /&gt;
&lt;br /&gt;
Rasta Him, id 73, is a Technician and reports to Thomas Wells.&lt;br /&gt;
&lt;br /&gt;
Claire Collins, id 89, is a Supervisor and reports to George Mills.&lt;br /&gt;
&lt;br /&gt;
Jim Four, id 95, is a Receptionist and reports to Claire Collins.&lt;br /&gt;
&lt;br /&gt;
Tom Flat, id 104, is a Receptionist who reports to Claire Collins.&lt;br /&gt;
&lt;br /&gt;
Grace Marks, id 64, is a Manager and reports to Simon Sneath.&lt;br /&gt;
&lt;br /&gt;
Dan Four, id 68, is a Manager and reports to Simon Sneath.&lt;br /&gt;
&lt;br /&gt;
Shad Fifty, id 117, is in Security and reports to Dan Four.&lt;br /&gt;
&lt;br /&gt;
Tall Nephew, id 108, is in Legal and reports to Grace Marks.&lt;br /&gt;
&lt;br /&gt;
Short Nephew, id 109, is in Legal and reports to Grace Marks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class Chart {&lt;br /&gt;
    static class Employee {&lt;br /&gt;
        int id;&lt;br /&gt;
        String firstName;&lt;br /&gt;
        String lastName;&lt;br /&gt;
        String jobTitle;&lt;br /&gt;
        boolean mapped;&lt;br /&gt;
&lt;br /&gt;
        Employee(int id, String fn, String ln, String jt) {&lt;br /&gt;
            this.id = id;&lt;br /&gt;
            this.jobTitle = jt;&lt;br /&gt;
            this.firstName = fn;&lt;br /&gt;
            this.lastName = ln;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void map() {&lt;br /&gt;
            mapped = true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void unmap() {&lt;br /&gt;
            mapped = false;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private final HashMap&amp;lt;Employee, LinkedList&amp;lt;Employee&amp;gt;&amp;gt; assignment;&lt;br /&gt;
&lt;br /&gt;
    public Chart(boolean directed) {&lt;br /&gt;
        assignment = new HashMap&amp;lt;&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdgeHelper(Employee a, Employee b) {&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; e = assignment.get(a);&lt;br /&gt;
        if (e != null) {&lt;br /&gt;
            assignment.remove(b);&lt;br /&gt;
        } else&lt;br /&gt;
            e = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        e.add(b);&lt;br /&gt;
        assignment.put(a, e);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdge(Employee boss, Employee subordinate) {&lt;br /&gt;
        if (!assignment.containsKey(boss))&lt;br /&gt;
            assignment.put(boss, null);&lt;br /&gt;
        if (!assignment.containsKey(subordinate))&lt;br /&gt;
            assignment.put(subordinate, null);&lt;br /&gt;
        addEdgeHelper(boss, subordinate);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void depthFirstSearch(Employee employee) {&lt;br /&gt;
        employee.map();&lt;br /&gt;
        System.out.println(employee.firstName + &amp;quot; &amp;quot; + employee.lastName + &amp;quot; is a &amp;quot; + employee.jobTitle);&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; neighbors = assignment.get(employee);&lt;br /&gt;
        if (neighbors == null)&lt;br /&gt;
            return;&lt;br /&gt;
        for (Employee e : neighbors) {&lt;br /&gt;
            if (!e.mapped)&lt;br /&gt;
                depthFirstSearch(e);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void breadthFirstSearch(Employee employee) {&lt;br /&gt;
        /*Check if target item is null - if so quit*/&lt;br /&gt;
        if (employee == null)&lt;br /&gt;
            return;&lt;br /&gt;
        /*Declare a queue using LinkedList and add the target item*/&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        queue.add(employee);&lt;br /&gt;
        /*As long as the queue has data get the first in item .removeFirst*/&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Employee currentFirst = queue.removeFirst();&lt;br /&gt;
            /*If visited move on*/&lt;br /&gt;
            if (currentFirst.mapped) {&lt;br /&gt;
                continue;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*else visit it and print it*/&lt;br /&gt;
                currentFirst.map();&lt;br /&gt;
                System.out.println(currentFirst.id + &amp;quot;: &amp;quot; + currentFirst.firstName + &amp;quot; &amp;quot; + currentFirst.lastName + &amp;quot; - &amp;quot; + currentFirst.jobTitle);&lt;br /&gt;
            }&lt;br /&gt;
            /*Find neighbors of the current item*/&lt;br /&gt;
            LinkedList&amp;lt;Employee&amp;gt; allNeighbors = assignment.get(currentFirst);&lt;br /&gt;
            /*If there are none move on*/&lt;br /&gt;
            if (allNeighbors == null)&lt;br /&gt;
                continue;&lt;br /&gt;
            /*else if there are some and not visited, add them to the queue and the process starts over*/&lt;br /&gt;
            for (Employee e : allNeighbors) {&lt;br /&gt;
                if (!e.mapped)&lt;br /&gt;
                    queue.add(e);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void resetMapping() {&lt;br /&gt;
        for (Employee e : assignment.keySet()) {&lt;br /&gt;
            e.unmap();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Employee a = new Employee(38, &amp;quot;Jimbo&amp;quot;, &amp;quot;Jones&amp;quot;, &amp;quot;President&amp;quot;);&lt;br /&gt;
        Employee b = new Employee(39, &amp;quot;Mike&amp;quot;, &amp;quot;McCobb&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee c = new Employee(43, &amp;quot;Elda&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee d = new Employee(48, &amp;quot;Simon&amp;quot;, &amp;quot;Sneeth&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee e = new Employee(56, &amp;quot;Tim&amp;quot;, &amp;quot;Scott&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee f = new Employee(58, &amp;quot;Bob&amp;quot;, &amp;quot;Tilman&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee g = new Employee(78, &amp;quot;Andrew&amp;quot;, &amp;quot;Cole&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee h = new Employee(83, &amp;quot;Matt&amp;quot;, &amp;quot;Lemon&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee i = new Employee(88, &amp;quot;Chris&amp;quot;, &amp;quot;Lock&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee j = new Employee(71, &amp;quot;Agnes&amp;quot;, &amp;quot;White&amp;quot;, &amp;quot;Accountant&amp;quot;);&lt;br /&gt;
        Employee k = new Employee(61, &amp;quot;George&amp;quot;, &amp;quot;Mills&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee l = new Employee(59, &amp;quot;Thomas&amp;quot;, &amp;quot;Wells&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee m = new Employee(63, &amp;quot;Zip&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee n = new Employee(73, &amp;quot;Rasta&amp;quot;, &amp;quot;Him&amp;quot;, &amp;quot;Technician&amp;quot;);&lt;br /&gt;
        Employee o = new Employee(89, &amp;quot;Claire&amp;quot;, &amp;quot;Collins&amp;quot;, &amp;quot;Supervisor&amp;quot;);&lt;br /&gt;
        Employee p = new Employee(95, &amp;quot;Jim&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee q = new Employee(104, &amp;quot;Tom&amp;quot;, &amp;quot;Flat&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee r = new Employee(64, &amp;quot;Grace&amp;quot;, &amp;quot;Marks&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee s = new Employee(68, &amp;quot;Dan&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee t = new Employee(117, &amp;quot;Shad&amp;quot;, &amp;quot;Fifty&amp;quot;, &amp;quot;Security&amp;quot;);&lt;br /&gt;
        Employee u = new Employee(108, &amp;quot;Tall&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
        Employee v = new Employee(109, &amp;quot;Short&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        Chart chart = new Chart(true);&lt;br /&gt;
        chart.addEdge(a, b);&lt;br /&gt;
        chart.addEdge(a, c);&lt;br /&gt;
        chart.addEdge(a, d);&lt;br /&gt;
        chart.addEdge(b, e);&lt;br /&gt;
        chart.addEdge(b, f);&lt;br /&gt;
        chart.addEdge(e, g);&lt;br /&gt;
        chart.addEdge(e, h);&lt;br /&gt;
        chart.addEdge(e, i);&lt;br /&gt;
        chart.addEdge(f, j);&lt;br /&gt;
        chart.addEdge(c, k);&lt;br /&gt;
        chart.addEdge(c, l);&lt;br /&gt;
        chart.addEdge(c, m);&lt;br /&gt;
        chart.addEdge(l, n);&lt;br /&gt;
        chart.addEdge(k, o);&lt;br /&gt;
        chart.addEdge(o, p);&lt;br /&gt;
        chart.addEdge(o, q);&lt;br /&gt;
        chart.addEdge(d, r);&lt;br /&gt;
        chart.addEdge(d, s);&lt;br /&gt;
        chart.addEdge(s, t);&lt;br /&gt;
        chart.addEdge(r, u);&lt;br /&gt;
        chart.addEdge(r, v);&lt;br /&gt;
        //System.out.println(a.firstName + &amp;quot; &amp;quot; + a.lastName + &amp;quot; &amp;quot; + a.jobTitle + &amp;quot; &amp;quot; + a.id);&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        //chart.depthFirstSearch(k);&lt;br /&gt;
&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        chart.breadthFirstSearch(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Find missing number==&lt;br /&gt;
You are given an array of positive numbers from 1 to n, such that all numbers from 1 to n are present except one number x. You have to find x. The input array is not sorted. Look at the below array and give it a try before checking the solution.&lt;br /&gt;
&lt;br /&gt;
The missing number = a sum of the provided array subtracted from a sum of indices + 2&lt;br /&gt;
example 1, 2, 4 missing is 3 = (1 +2 +3+4) - (1 +2+4)&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
public class MissingNum {&lt;br /&gt;
    public static int findMissing(List&amp;lt;Integer&amp;gt; l) {&lt;br /&gt;
        int tot_prov = 0;&lt;br /&gt;
        for (Integer integer : l) {&lt;br /&gt;
            tot_prov += integer;&lt;br /&gt;
        }&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; k = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;
        int tot_req = 0;&lt;br /&gt;
        for (int i = 0; i &amp;lt; l.size() + 2; i++) {&lt;br /&gt;
            k.add(i);&lt;br /&gt;
            tot_req += k.get(i);&lt;br /&gt;
        }&lt;br /&gt;
        return tot_req - tot_prov;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; g = Arrays.asList(8, 5, 3, 2, 4, 1, 7);&lt;br /&gt;
        System.out.println(&amp;quot;The missing number is &amp;quot; + findMissing(g));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Mergesort==&lt;br /&gt;
public class MergeSort {&lt;br /&gt;
&lt;br /&gt;
    private static Comparable[] aux;&lt;br /&gt;
&lt;br /&gt;
    public static void sort(Comparable[] a) {&lt;br /&gt;
        aux = new Comparable[a.length];&lt;br /&gt;
        sort(a, 0, a.length - 1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void merge(Comparable[] a, int lo, int mid, int hi) {&lt;br /&gt;
        assert isSorted(a, lo, mid);&lt;br /&gt;
        assert isSorted(a, mid + 1, hi);&lt;br /&gt;
        //copy for [] a to [] aux&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            aux[k] = a[k];&lt;br /&gt;
        }&lt;br /&gt;
        // the merging process&lt;br /&gt;
        // i is the first index of the first half of the array&lt;br /&gt;
        // j is the first index of the second half of the array&lt;br /&gt;
        int i = lo, j = mid + 1;&lt;br /&gt;
&lt;br /&gt;
        // for every value of k - the indices of [] a&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            /*Left half exhausted take from the right*/&lt;br /&gt;
            if (i &amp;gt; mid)&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Right half exhausted take from the left*/&lt;br /&gt;
            else if (j &amp;gt; hi)&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
                /*Current key on the right less than current key on the left take from the right*/&lt;br /&gt;
            else if (less(aux[j], aux[i]))&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Current key on the right greater than current key on the left take from the left */&lt;br /&gt;
            else&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
        }&lt;br /&gt;
        assert isSorted(a, lo, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void sort(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        if (hi &amp;lt;= lo)&lt;br /&gt;
            return;&lt;br /&gt;
        int mid = lo + (hi - lo) / 2;&lt;br /&gt;
        sort(a, lo, mid);&lt;br /&gt;
        sort(a, mid + 1, hi);&lt;br /&gt;
        merge(a, lo, mid, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean less(Comparable v, Comparable w) {&lt;br /&gt;
        return v.compareTo(w) &amp;lt; 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean isSorted(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        for (int i = lo + 1; i &amp;lt;= hi; i++)&lt;br /&gt;
            if (less(a[i], a[i - 1])) return false;&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void show(Comparable[] a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length; i++) {&lt;br /&gt;
            //System.out.print(a[i]);&lt;br /&gt;
            System.out.println(a[i]);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        // Comparable[] a = {&amp;quot;E&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;A&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;T&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
        Comparable[] aa = {&amp;quot;A&amp;quot;, &amp;quot;X&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;};&lt;br /&gt;
        Comparable[] bb = {&amp;quot;H&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;J&amp;quot;, &amp;quot;Y&amp;quot;, &amp;quot;Z&amp;quot;};&lt;br /&gt;
        /*Merge the two comparable arrays*/&lt;br /&gt;
        Comparable[] a = new Comparable[aa.length + bb.length];&lt;br /&gt;
        System.arraycopy(aa, 0, a, 0, aa.length);&lt;br /&gt;
        System.arraycopy(bb, 0, a, aa.length, bb.length);&lt;br /&gt;
&lt;br /&gt;
        MergeSort.sort(a);&lt;br /&gt;
        show(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Binary Search==&lt;br /&gt;
public class BinarySearch {&lt;br /&gt;
    public static int find(int[] arr, int target) {&lt;br /&gt;
        int left = 0;&lt;br /&gt;
        int right = arr.length - 1;&lt;br /&gt;
        while (left &amp;lt;= right) {&lt;br /&gt;
            int mid = left + (right - left);&lt;br /&gt;
            if (arr[mid] == target)&lt;br /&gt;
                return mid;&lt;br /&gt;
            if (arr[mid] &amp;lt; target) {&lt;br /&gt;
                left = mid + 1;&lt;br /&gt;
            } else {&lt;br /&gt;
                right = mid - 1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return -1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        int[] f = {1, 10, 20, 47, 59, 63, 75, 88, 99, 107, 120, 133, 155, 162, 176, 188, 199, 200, 210, 222, 223};&lt;br /&gt;
        int t = 162;&lt;br /&gt;
        System.out.println(find(f, t));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Validate Binary Search Tree==&lt;br /&gt;
&lt;br /&gt;
Given a Binary Tree, figure out whether it’s a Binary Search Tree. In a binary search tree, each node’s key value is smaller than the key value of all nodes in the right subtree, and is greater than the key values of all nodes in the left subtree. Below is an example of a binary tree that is a valid BST.&lt;br /&gt;
&lt;br /&gt;
public class BinarySearchTree {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int value) {&lt;br /&gt;
            this.value = value;&lt;br /&gt;
            this.left = null;&lt;br /&gt;
            this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public BinarySearchTree() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    public boolean isbst(Node root, Node l, Node r) {&lt;br /&gt;
        if (root == null)&lt;br /&gt;
            return true;&lt;br /&gt;
        if (l != null &amp;amp;&amp;amp; l.value &amp;gt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        if (r != null &amp;amp;&amp;amp; r.value &amp;lt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        return isbst(root.left, l, root) &amp;amp;&amp;amp; isbst(root.right, root, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        BinarySearchTree bt = new BinarySearchTree();&lt;br /&gt;
        bt.root = new Node(10);&lt;br /&gt;
        bt.root.left = new Node(5);&lt;br /&gt;
        bt.root.right = new Node(15);&lt;br /&gt;
        bt.root.left.left = new Node(4);&lt;br /&gt;
        bt.root.left.right = new Node(7);&lt;br /&gt;
        bt.root.right.left = new Node(13);&lt;br /&gt;
        bt.root.right.right = new Node(26);&lt;br /&gt;
        if (bt.isbst(bt.root, null, null))&lt;br /&gt;
            System.out.println(&amp;quot;Is a BST&amp;quot;);&lt;br /&gt;
        else&lt;br /&gt;
            System.out.println(&amp;quot;Is not a BST&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Determine if two integers add up to given number==&lt;br /&gt;
Given an array of integers and a value, determine if there are any two integers in the array whose sum is equal to the given value. Return true if the sum exists and return false if it does not. Consider this array and the target sums:&lt;br /&gt;
public class SumOfTwo {&lt;br /&gt;
        public static void main(String args[]) {&lt;br /&gt;
            Set&amp;lt;Integer&amp;gt; set = new HashSet&amp;lt;&amp;gt;(); /*Populate this Set with target values*/&lt;br /&gt;
            /*Array of target values*/&lt;br /&gt;
            int[] g = {5, 6, 8, 39, 9, 11, 20, 59, 10, 1};&lt;br /&gt;
            /*Insert the arrays values in the set*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                set.add(g[i]);&lt;br /&gt;
            }&lt;br /&gt;
            /*Set a target number to check for*/&lt;br /&gt;
            int y = 20;&lt;br /&gt;
            /*If there are a set of numbers that would add up, increment this counter*/&lt;br /&gt;
            int counter = 0;&lt;br /&gt;
            /*Pick up a number in the set by turns and assign it to x*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                int x = g[i];&lt;br /&gt;
                /*Check to see if the set contains target minus found number.*/&lt;br /&gt;
                if (set.contains(y - x)) { //if this is true&lt;br /&gt;
                    /*If so, increment the counter by 1*/&lt;br /&gt;
                    counter += 1;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (counter &amp;gt; 0) { /*Some numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            } else { /*No numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are no sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Merge two sorted lists==&lt;br /&gt;
Given two sorted linked lists, merge them so that the resulting linked list is also sorted. Consider two sorted linked lists and the merged list below them as an example.&lt;br /&gt;
import java.util.Stack;&lt;br /&gt;
/*This code merges two ordered lists into one keeping their increasing order&lt;br /&gt;
 * the lists used for testing are in the main function*/&lt;br /&gt;
public class MergeLists {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int data;&lt;br /&gt;
        Node next;&lt;br /&gt;
        Node(int z) {&lt;br /&gt;
            this.data = z;&lt;br /&gt;
            next = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads the values of a list and loads them on a Stack, then reads from the stack*/&lt;br /&gt;
    public static void loadInStack(Node f) {&lt;br /&gt;
        Stack&amp;lt;Integer&amp;gt; pack = new Stack&amp;lt;&amp;gt;();&lt;br /&gt;
        if (f == null)&lt;br /&gt;
            return;&lt;br /&gt;
        pack.push(f.data);&lt;br /&gt;
        loadInStack(f.next);&lt;br /&gt;
        System.out.println(pack);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function duplicates the provided list into another one*/&lt;br /&gt;
    public static void duplicateList(Node m) {&lt;br /&gt;
        Node hold = new Node(-1);&lt;br /&gt;
        if (m == null)&lt;br /&gt;
            return;&lt;br /&gt;
        hold.data = m.data;&lt;br /&gt;
        duplicateList(m.next);&lt;br /&gt;
        System.out.println(hold.data);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads from two lists picking the lesser of*/&lt;br /&gt;
    /*It takes in two lists as variables a and b*/&lt;br /&gt;
    public static void pickTwo(Node a, Node b) {&lt;br /&gt;
        /*This is a dummy list initialized with -1*/&lt;br /&gt;
        Node dummyList = new Node(-1);&lt;br /&gt;
        while (a != null &amp;amp;&amp;amp; b != null) {&lt;br /&gt;
            if (a.data &amp;lt;= b.data) {&lt;br /&gt;
                /*populate the dummy list from a, if smaller*/&lt;br /&gt;
                dummyList.data = a.data;&lt;br /&gt;
                /*Increment a*/&lt;br /&gt;
                a = a.next;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*populate the dummy list from b, if smaller*/&lt;br /&gt;
                dummyList.data = b.data;&lt;br /&gt;
                /*Increment b*/&lt;br /&gt;
                b = b.next;&lt;br /&gt;
            }&lt;br /&gt;
            /*Print when done*/&lt;br /&gt;
            System.out.print(dummyList.data + &amp;quot; -&amp;gt; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Node f = new Node(2);&lt;br /&gt;
        Node g = new Node(7);&lt;br /&gt;
        Node h = new Node(8);&lt;br /&gt;
        Node i = new Node(11);&lt;br /&gt;
&lt;br /&gt;
        f.next = g;&lt;br /&gt;
        g.next = h;&lt;br /&gt;
        h.next = i;&lt;br /&gt;
&lt;br /&gt;
        //printNodes(f);&lt;br /&gt;
&lt;br /&gt;
        Node k = new Node(4);&lt;br /&gt;
        Node l = new Node(6);&lt;br /&gt;
        Node m = new Node(9);&lt;br /&gt;
        Node n = new Node(10);&lt;br /&gt;
        Node o = new Node(12);&lt;br /&gt;
&lt;br /&gt;
        k.next = l;&lt;br /&gt;
        l.next = m;&lt;br /&gt;
        m.next = n;&lt;br /&gt;
        n.next = o;&lt;br /&gt;
&lt;br /&gt;
        //loadInStack(f);&lt;br /&gt;
        //duplicateList(k);&lt;br /&gt;
        pickTwo(f, k);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Reverse String==&lt;br /&gt;
&lt;br /&gt;
Reverse the order of words in a given sentence (an array of characters).&lt;br /&gt;
&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class ReverseString {&lt;br /&gt;
    public static void lizy(String[] curr) {&lt;br /&gt;
        LinkedList&amp;lt;String&amp;gt; y = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        for (int g = 0; g &amp;lt;= curr.length - 1; g++) {&lt;br /&gt;
            y.add(curr[g]);&lt;br /&gt;
        }&lt;br /&gt;
        Iterator i = y.descendingIterator();&lt;br /&gt;
        while (i.hasNext()) {&lt;br /&gt;
            System.out.print(i.next() + &amp;quot; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        String given = &amp;quot;Hello World&amp;quot;;&lt;br /&gt;
        String[] given_array = given.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String lineOfCurrencies = &amp;quot;USD JPY AUD SGD HKD CAD CHF GBP EURO INR&amp;quot;;&lt;br /&gt;
        String multispace = &amp;quot;Kenya    Uganda Tanzania   Burundi     Rwanda&amp;quot;;&lt;br /&gt;
        String[] currencies = lineOfCurrencies.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String[] ms = multispace.split(&amp;quot;\\s+&amp;quot;);&lt;br /&gt;
        ReverseString.lizy(given_array);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Level Order Traversal of Binary Tree==&lt;br /&gt;
&lt;br /&gt;
Given the root of a binary tree, display the node values at each level. Node values for all levels should be displayed on separate lines. Let’s take a look at the below binary tree.&lt;br /&gt;
&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class Lot {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int v) {&lt;br /&gt;
            this.value = v;&lt;br /&gt;
            this.left = this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public Lot() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    void lot() {&lt;br /&gt;
        LinkedList&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        //Queue&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;Node&amp;gt;();&lt;br /&gt;
        queue.add(root);&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Node tempNode = queue.removeFirst();&lt;br /&gt;
            //Node tempNode = queue.poll();&lt;br /&gt;
            System.out.print(tempNode.value + &amp;quot; &amp;quot;);&lt;br /&gt;
            if (tempNode.left != null)&lt;br /&gt;
                queue.add(tempNode.left);&lt;br /&gt;
            if (tempNode.right != null)&lt;br /&gt;
                queue.add(tempNode.right);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Lot l = new Lot();&lt;br /&gt;
        l.root = new Node(100);&lt;br /&gt;
        l.root.left = new Node(50);&lt;br /&gt;
        l.root.right = new Node(200);&lt;br /&gt;
        l.root.left.left = new Node(25);&lt;br /&gt;
        l.root.left.right = new Node(75);&lt;br /&gt;
        l.root.right.right = new Node(350);&lt;br /&gt;
        System.out.println(&amp;quot;Level order traversal is as follows: &amp;quot;);&lt;br /&gt;
        l.lot();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==String Segmentation==&lt;br /&gt;
You are given a dictionary of words and a large input string. You have to find out whether the input string can be completely segmented into the words of a given dictionary. The following two examples elaborate on the problem further.&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
&lt;br /&gt;
public class Dictionary {&lt;br /&gt;
    boolean pair(Set&amp;lt;String&amp;gt; dictionary, String a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length(); i++) {&lt;br /&gt;
            String first_word = a.substring(0, i);&lt;br /&gt;
            if (dictionary.contains(first_word)) {&lt;br /&gt;
                String second_word = a.substring(i);&lt;br /&gt;
                if (dictionary.contains(second_word) || pair(dictionary, second_word)) {&lt;br /&gt;
                    return true;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        Dictionary dictionary = new Dictionary();&lt;br /&gt;
        Set&amp;lt;String&amp;gt; dict = new HashSet&amp;lt;&amp;gt;();&lt;br /&gt;
        dict.add(&amp;quot;geo&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;science&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;politics&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;thermal&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;physical&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;mis&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;under&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;stand&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;understand&amp;quot;);&lt;br /&gt;
        String word = &amp;quot;misunderstand&amp;quot;;&lt;br /&gt;
        if (dictionary.pair(dict, word)) {&lt;br /&gt;
            System.out.println(&amp;quot;The test word &amp;quot; + word + &amp;quot; fits in two words in the dictionary&amp;quot;);&lt;br /&gt;
        } else {&lt;br /&gt;
            System.out.println(&amp;quot;The test word &amp;quot; + word + &amp;quot; does not make dictionary words&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Computing number combinations==&lt;br /&gt;
Suppose we have coin denominations of [1, 2, 5] and the total amount is 7. We can make changes in the following 6 ways:&lt;br /&gt;
&lt;br /&gt;
public class Combinations {&lt;br /&gt;
    static int changeOptions(int[] denominations, int amount) {&lt;br /&gt;
        int[] solution = new int[amount + 1];&lt;br /&gt;
        solution[0] = 1;&lt;br /&gt;
        for (int x : denominations) {&lt;br /&gt;
            for (int i = x; i &amp;lt; (amount + 1); ++i) {&lt;br /&gt;
                solution[i] += solution[i - x];&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return solution[solution.length - 1];&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        int[] denominations = new int[]{1, 2, 5, 10};&lt;br /&gt;
        int amount = 5;&lt;br /&gt;
        int result = changeOptions(denominations, amount);&lt;br /&gt;
        System.out.println(&amp;quot;There are &amp;quot; + result + &amp;quot; combinations in forming &amp;quot; + amount + &amp;quot; given the factors below: &amp;quot;);&lt;br /&gt;
        for (int denomination : denominations) {&lt;br /&gt;
            System.out.println(denomination);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Sum of two numbers==&lt;br /&gt;
Are there two numbers in the provided set that add up to the given number?&lt;br /&gt;
&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
&lt;br /&gt;
public class SumOfTwo {&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Set&amp;lt;Integer&amp;gt; set = new HashSet&amp;lt;&amp;gt;(); /*Populate this Set with target values*/&lt;br /&gt;
        /*Array of target values*/&lt;br /&gt;
        int[] g = {5, 6, 8, 39, 9, 11, 20, 59, 10, 1};&lt;br /&gt;
        /*Insert the arrays values in the set*/&lt;br /&gt;
        for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
            set.add(g[i]);&lt;br /&gt;
        }&lt;br /&gt;
        /*Set a target number to check for*/&lt;br /&gt;
        int y = 20;&lt;br /&gt;
        /*If there are a set of numbers that would add up, increment this counter*/&lt;br /&gt;
        int counter = 0;&lt;br /&gt;
        /*Pick up a number in the set by turns and assign it to x*/&lt;br /&gt;
        for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
            int x = g[i];&lt;br /&gt;
            /*Check to see if the set contains target minus found number.*/&lt;br /&gt;
            if (set.contains(y - x)) { //if this is true&lt;br /&gt;
                /*If so, increment the counter by 1*/&lt;br /&gt;
                counter += 1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        if (counter &amp;gt; 0) { /*Some numbers add up*/&lt;br /&gt;
            System.out.println(&amp;quot;There are sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
        } else { /*No numbers add up*/&lt;br /&gt;
            System.out.println(&amp;quot;There are no sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Find two numbers that add up==&lt;br /&gt;
You have a set of numbers and another number (target) that is comprised of two numbers in the set added up. How do you find if there are two numbers in the set that add up?&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
&lt;br /&gt;
public class TwoThatAdd {&lt;br /&gt;
    static int[] showAdded(int[] set, int target) {&lt;br /&gt;
        Arrays.sort(set);&lt;br /&gt;
        int left = 0;&lt;br /&gt;
        int right = (set.length - 1);&lt;br /&gt;
        while (left &amp;lt; right) {&lt;br /&gt;
            if (set[left] + set[right] == target) {&lt;br /&gt;
                return new int[]{set[left], set[right]};&lt;br /&gt;
            } else if (set[left] + set[right] &amp;lt; target) {&lt;br /&gt;
                left++;&lt;br /&gt;
            } else {&lt;br /&gt;
                right--;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return new int[]{};&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        int[] options = {2, 4, 6, 7, 11, 13, 16};&lt;br /&gt;
        int target = 18;&lt;br /&gt;
        System.out.println(Arrays.toString(TwoThatAdd.showAdded(options, target)));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=Algorithms&amp;diff=151</id>
		<title>Algorithms</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=Algorithms&amp;diff=151"/>
		<updated>2022-10-26T03:29:51Z</updated>

		<summary type="html">&lt;p&gt;Leksy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Java Graph Implementation with Search Methods==&lt;br /&gt;
&lt;br /&gt;
The algorithm below implements the organization chart below:&lt;br /&gt;
&lt;br /&gt;
Jimbo Jones is employee id 38 and is the President.&lt;br /&gt;
&lt;br /&gt;
Mike McCobb, id 39, is a VP and reports to Jimbo Jones.&lt;br /&gt;
&lt;br /&gt;
Elda Two, id 43, is a VP and reports to Jimbo Jones.&lt;br /&gt;
&lt;br /&gt;
Simon Sneath, id 48, is a VP and reports to Jimbo Jones.&lt;br /&gt;
&lt;br /&gt;
Tim Scott, id 56, is a Manager and reports to Mike McCobb.&lt;br /&gt;
&lt;br /&gt;
Bob Tilman, id 58, is a Manager and reports to Mike McCobb.&lt;br /&gt;
&lt;br /&gt;
Andrew Cole, id 78, is an Analyst and reports to Tim Scott.&lt;br /&gt;
&lt;br /&gt;
Matt Lemon, id 83, is an Analyst and reports to Tim Scott.&lt;br /&gt;
&lt;br /&gt;
Chris Lock, id 88, is an Analyst and reports to Tim Scott.&lt;br /&gt;
&lt;br /&gt;
Agnes White, id 71, is an Accountant and reports to Bob Tilman.&lt;br /&gt;
&lt;br /&gt;
George Mills, id 61, is a Manager and reports to Elda Two.&lt;br /&gt;
&lt;br /&gt;
Thomas Wells, id 59, is a Manager and reports to Elda Two.&lt;br /&gt;
&lt;br /&gt;
Zip Two, id 63, is Manager and also reports to Elda Two.&lt;br /&gt;
&lt;br /&gt;
Rasta Him, id 73, is a Technician and reports to Thomas Wells.&lt;br /&gt;
&lt;br /&gt;
Claire Collins, id 89, is a Supervisor and reports to George Mills.&lt;br /&gt;
&lt;br /&gt;
Jim Four, id 95, is a Receptionist and reports to Claire Collins.&lt;br /&gt;
&lt;br /&gt;
Tom Flat, id 104, is a Receptionist who reports to Claire Collins.&lt;br /&gt;
&lt;br /&gt;
Grace Marks, id 64, is a Manager and reports to Simon Sneath.&lt;br /&gt;
&lt;br /&gt;
Dan Four, id 68, is a Manager and reports to Simon Sneath.&lt;br /&gt;
&lt;br /&gt;
Shad Fifty, id 117, is in Security and reports to Dan Four.&lt;br /&gt;
&lt;br /&gt;
Tall Nephew, id 108, is in Legal and reports to Grace Marks.&lt;br /&gt;
&lt;br /&gt;
Short Nephew, id 109, is in Legal and reports to Grace Marks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class Chart {&lt;br /&gt;
    static class Employee {&lt;br /&gt;
        int id;&lt;br /&gt;
        String firstName;&lt;br /&gt;
        String lastName;&lt;br /&gt;
        String jobTitle;&lt;br /&gt;
        boolean mapped;&lt;br /&gt;
&lt;br /&gt;
        Employee(int id, String fn, String ln, String jt) {&lt;br /&gt;
            this.id = id;&lt;br /&gt;
            this.jobTitle = jt;&lt;br /&gt;
            this.firstName = fn;&lt;br /&gt;
            this.lastName = ln;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void map() {&lt;br /&gt;
            mapped = true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void unmap() {&lt;br /&gt;
            mapped = false;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private final HashMap&amp;lt;Employee, LinkedList&amp;lt;Employee&amp;gt;&amp;gt; assignment;&lt;br /&gt;
&lt;br /&gt;
    public Chart(boolean directed) {&lt;br /&gt;
        assignment = new HashMap&amp;lt;&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdgeHelper(Employee a, Employee b) {&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; e = assignment.get(a);&lt;br /&gt;
        if (e != null) {&lt;br /&gt;
            assignment.remove(b);&lt;br /&gt;
        } else&lt;br /&gt;
            e = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        e.add(b);&lt;br /&gt;
        assignment.put(a, e);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdge(Employee boss, Employee subordinate) {&lt;br /&gt;
        if (!assignment.containsKey(boss))&lt;br /&gt;
            assignment.put(boss, null);&lt;br /&gt;
        if (!assignment.containsKey(subordinate))&lt;br /&gt;
            assignment.put(subordinate, null);&lt;br /&gt;
        addEdgeHelper(boss, subordinate);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void depthFirstSearch(Employee employee) {&lt;br /&gt;
        employee.map();&lt;br /&gt;
        System.out.println(employee.firstName + &amp;quot; &amp;quot; + employee.lastName + &amp;quot; is a &amp;quot; + employee.jobTitle);&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; neighbors = assignment.get(employee);&lt;br /&gt;
        if (neighbors == null)&lt;br /&gt;
            return;&lt;br /&gt;
        for (Employee e : neighbors) {&lt;br /&gt;
            if (!e.mapped)&lt;br /&gt;
                depthFirstSearch(e);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void breadthFirstSearch(Employee employee) {&lt;br /&gt;
        /*Check if target item is null - if so quit*/&lt;br /&gt;
        if (employee == null)&lt;br /&gt;
            return;&lt;br /&gt;
        /*Declare a queue using LinkedList and add the target item*/&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        queue.add(employee);&lt;br /&gt;
        /*As long as the queue has data get the first in item .removeFirst*/&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Employee currentFirst = queue.removeFirst();&lt;br /&gt;
            /*If visited move on*/&lt;br /&gt;
            if (currentFirst.mapped) {&lt;br /&gt;
                continue;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*else visit it and print it*/&lt;br /&gt;
                currentFirst.map();&lt;br /&gt;
                System.out.println(currentFirst.id + &amp;quot;: &amp;quot; + currentFirst.firstName + &amp;quot; &amp;quot; + currentFirst.lastName + &amp;quot; - &amp;quot; + currentFirst.jobTitle);&lt;br /&gt;
            }&lt;br /&gt;
            /*Find neighbors of the current item*/&lt;br /&gt;
            LinkedList&amp;lt;Employee&amp;gt; allNeighbors = assignment.get(currentFirst);&lt;br /&gt;
            /*If there are none move on*/&lt;br /&gt;
            if (allNeighbors == null)&lt;br /&gt;
                continue;&lt;br /&gt;
            /*else if there are some and not visited, add them to the queue and the process starts over*/&lt;br /&gt;
            for (Employee e : allNeighbors) {&lt;br /&gt;
                if (!e.mapped)&lt;br /&gt;
                    queue.add(e);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void resetMapping() {&lt;br /&gt;
        for (Employee e : assignment.keySet()) {&lt;br /&gt;
            e.unmap();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Employee a = new Employee(38, &amp;quot;Jimbo&amp;quot;, &amp;quot;Jones&amp;quot;, &amp;quot;President&amp;quot;);&lt;br /&gt;
        Employee b = new Employee(39, &amp;quot;Mike&amp;quot;, &amp;quot;McCobb&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee c = new Employee(43, &amp;quot;Elda&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee d = new Employee(48, &amp;quot;Simon&amp;quot;, &amp;quot;Sneeth&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee e = new Employee(56, &amp;quot;Tim&amp;quot;, &amp;quot;Scott&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee f = new Employee(58, &amp;quot;Bob&amp;quot;, &amp;quot;Tilman&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee g = new Employee(78, &amp;quot;Andrew&amp;quot;, &amp;quot;Cole&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee h = new Employee(83, &amp;quot;Matt&amp;quot;, &amp;quot;Lemon&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee i = new Employee(88, &amp;quot;Chris&amp;quot;, &amp;quot;Lock&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee j = new Employee(71, &amp;quot;Agnes&amp;quot;, &amp;quot;White&amp;quot;, &amp;quot;Accountant&amp;quot;);&lt;br /&gt;
        Employee k = new Employee(61, &amp;quot;George&amp;quot;, &amp;quot;Mills&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee l = new Employee(59, &amp;quot;Thomas&amp;quot;, &amp;quot;Wells&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee m = new Employee(63, &amp;quot;Zip&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee n = new Employee(73, &amp;quot;Rasta&amp;quot;, &amp;quot;Him&amp;quot;, &amp;quot;Technician&amp;quot;);&lt;br /&gt;
        Employee o = new Employee(89, &amp;quot;Claire&amp;quot;, &amp;quot;Collins&amp;quot;, &amp;quot;Supervisor&amp;quot;);&lt;br /&gt;
        Employee p = new Employee(95, &amp;quot;Jim&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee q = new Employee(104, &amp;quot;Tom&amp;quot;, &amp;quot;Flat&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee r = new Employee(64, &amp;quot;Grace&amp;quot;, &amp;quot;Marks&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee s = new Employee(68, &amp;quot;Dan&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee t = new Employee(117, &amp;quot;Shad&amp;quot;, &amp;quot;Fifty&amp;quot;, &amp;quot;Security&amp;quot;);&lt;br /&gt;
        Employee u = new Employee(108, &amp;quot;Tall&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
        Employee v = new Employee(109, &amp;quot;Short&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        Chart chart = new Chart(true);&lt;br /&gt;
        chart.addEdge(a, b);&lt;br /&gt;
        chart.addEdge(a, c);&lt;br /&gt;
        chart.addEdge(a, d);&lt;br /&gt;
        chart.addEdge(b, e);&lt;br /&gt;
        chart.addEdge(b, f);&lt;br /&gt;
        chart.addEdge(e, g);&lt;br /&gt;
        chart.addEdge(e, h);&lt;br /&gt;
        chart.addEdge(e, i);&lt;br /&gt;
        chart.addEdge(f, j);&lt;br /&gt;
        chart.addEdge(c, k);&lt;br /&gt;
        chart.addEdge(c, l);&lt;br /&gt;
        chart.addEdge(c, m);&lt;br /&gt;
        chart.addEdge(l, n);&lt;br /&gt;
        chart.addEdge(k, o);&lt;br /&gt;
        chart.addEdge(o, p);&lt;br /&gt;
        chart.addEdge(o, q);&lt;br /&gt;
        chart.addEdge(d, r);&lt;br /&gt;
        chart.addEdge(d, s);&lt;br /&gt;
        chart.addEdge(s, t);&lt;br /&gt;
        chart.addEdge(r, u);&lt;br /&gt;
        chart.addEdge(r, v);&lt;br /&gt;
        //System.out.println(a.firstName + &amp;quot; &amp;quot; + a.lastName + &amp;quot; &amp;quot; + a.jobTitle + &amp;quot; &amp;quot; + a.id);&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        //chart.depthFirstSearch(k);&lt;br /&gt;
&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        chart.breadthFirstSearch(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Find missing number==&lt;br /&gt;
You are given an array of positive numbers from 1 to n, such that all numbers from 1 to n are present except one number x. You have to find x. The input array is not sorted. Look at the below array and give it a try before checking the solution.&lt;br /&gt;
&lt;br /&gt;
The missing number = a sum of the provided array subtracted from a sum of indices + 2&lt;br /&gt;
example 1, 2, 4 missing is 3 = (1 +2 +3+4) - (1 +2+4)&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
public class MissingNum {&lt;br /&gt;
    public static int findMissing(List&amp;lt;Integer&amp;gt; l) {&lt;br /&gt;
        int tot_prov = 0;&lt;br /&gt;
        for (Integer integer : l) {&lt;br /&gt;
            tot_prov += integer;&lt;br /&gt;
        }&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; k = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;
        int tot_req = 0;&lt;br /&gt;
        for (int i = 0; i &amp;lt; l.size() + 2; i++) {&lt;br /&gt;
            k.add(i);&lt;br /&gt;
            tot_req += k.get(i);&lt;br /&gt;
        }&lt;br /&gt;
        return tot_req - tot_prov;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; g = Arrays.asList(8, 5, 3, 2, 4, 1, 7);&lt;br /&gt;
        System.out.println(&amp;quot;The missing number is &amp;quot; + findMissing(g));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Mergesort==&lt;br /&gt;
public class MergeSort {&lt;br /&gt;
&lt;br /&gt;
    private static Comparable[] aux;&lt;br /&gt;
&lt;br /&gt;
    public static void sort(Comparable[] a) {&lt;br /&gt;
        aux = new Comparable[a.length];&lt;br /&gt;
        sort(a, 0, a.length - 1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void merge(Comparable[] a, int lo, int mid, int hi) {&lt;br /&gt;
        assert isSorted(a, lo, mid);&lt;br /&gt;
        assert isSorted(a, mid + 1, hi);&lt;br /&gt;
        //copy for [] a to [] aux&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            aux[k] = a[k];&lt;br /&gt;
        }&lt;br /&gt;
        // the merging process&lt;br /&gt;
        // i is the first index of the first half of the array&lt;br /&gt;
        // j is the first index of the second half of the array&lt;br /&gt;
        int i = lo, j = mid + 1;&lt;br /&gt;
&lt;br /&gt;
        // for every value of k - the indices of [] a&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            /*Left half exhausted take from the right*/&lt;br /&gt;
            if (i &amp;gt; mid)&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Right half exhausted take from the left*/&lt;br /&gt;
            else if (j &amp;gt; hi)&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
                /*Current key on the right less than current key on the left take from the right*/&lt;br /&gt;
            else if (less(aux[j], aux[i]))&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Current key on the right greater than current key on the left take from the left */&lt;br /&gt;
            else&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
        }&lt;br /&gt;
        assert isSorted(a, lo, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void sort(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        if (hi &amp;lt;= lo)&lt;br /&gt;
            return;&lt;br /&gt;
        int mid = lo + (hi - lo) / 2;&lt;br /&gt;
        sort(a, lo, mid);&lt;br /&gt;
        sort(a, mid + 1, hi);&lt;br /&gt;
        merge(a, lo, mid, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean less(Comparable v, Comparable w) {&lt;br /&gt;
        return v.compareTo(w) &amp;lt; 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean isSorted(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        for (int i = lo + 1; i &amp;lt;= hi; i++)&lt;br /&gt;
            if (less(a[i], a[i - 1])) return false;&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void show(Comparable[] a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length; i++) {&lt;br /&gt;
            //System.out.print(a[i]);&lt;br /&gt;
            System.out.println(a[i]);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        // Comparable[] a = {&amp;quot;E&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;A&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;T&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
        Comparable[] aa = {&amp;quot;A&amp;quot;, &amp;quot;X&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;};&lt;br /&gt;
        Comparable[] bb = {&amp;quot;H&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;J&amp;quot;, &amp;quot;Y&amp;quot;, &amp;quot;Z&amp;quot;};&lt;br /&gt;
        /*Merge the two comparable arrays*/&lt;br /&gt;
        Comparable[] a = new Comparable[aa.length + bb.length];&lt;br /&gt;
        System.arraycopy(aa, 0, a, 0, aa.length);&lt;br /&gt;
        System.arraycopy(bb, 0, a, aa.length, bb.length);&lt;br /&gt;
&lt;br /&gt;
        MergeSort.sort(a);&lt;br /&gt;
        show(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Binary Search==&lt;br /&gt;
public class BinarySearch {&lt;br /&gt;
    public static int find(int[] arr, int target) {&lt;br /&gt;
        int left = 0;&lt;br /&gt;
        int right = arr.length - 1;&lt;br /&gt;
        while (left &amp;lt;= right) {&lt;br /&gt;
            int mid = left + (right - left);&lt;br /&gt;
            if (arr[mid] == target)&lt;br /&gt;
                return mid;&lt;br /&gt;
            if (arr[mid] &amp;lt; target) {&lt;br /&gt;
                left = mid + 1;&lt;br /&gt;
            } else {&lt;br /&gt;
                right = mid - 1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return -1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        int[] f = {1, 10, 20, 47, 59, 63, 75, 88, 99, 107, 120, 133, 155, 162, 176, 188, 199, 200, 210, 222, 223};&lt;br /&gt;
        int t = 162;&lt;br /&gt;
        System.out.println(find(f, t));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Validate Binary Search Tree==&lt;br /&gt;
&lt;br /&gt;
Given a Binary Tree, figure out whether it’s a Binary Search Tree. In a binary search tree, each node’s key value is smaller than the key value of all nodes in the right subtree, and is greater than the key values of all nodes in the left subtree. Below is an example of a binary tree that is a valid BST.&lt;br /&gt;
&lt;br /&gt;
public class BinarySearchTree {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int value) {&lt;br /&gt;
            this.value = value;&lt;br /&gt;
            this.left = null;&lt;br /&gt;
            this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public BinarySearchTree() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    public boolean isbst(Node root, Node l, Node r) {&lt;br /&gt;
        if (root == null)&lt;br /&gt;
            return true;&lt;br /&gt;
        if (l != null &amp;amp;&amp;amp; l.value &amp;gt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        if (r != null &amp;amp;&amp;amp; r.value &amp;lt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        return isbst(root.left, l, root) &amp;amp;&amp;amp; isbst(root.right, root, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        BinarySearchTree bt = new BinarySearchTree();&lt;br /&gt;
        bt.root = new Node(10);&lt;br /&gt;
        bt.root.left = new Node(5);&lt;br /&gt;
        bt.root.right = new Node(15);&lt;br /&gt;
        bt.root.left.left = new Node(4);&lt;br /&gt;
        bt.root.left.right = new Node(7);&lt;br /&gt;
        bt.root.right.left = new Node(13);&lt;br /&gt;
        bt.root.right.right = new Node(26);&lt;br /&gt;
        if (bt.isbst(bt.root, null, null))&lt;br /&gt;
            System.out.println(&amp;quot;Is a BST&amp;quot;);&lt;br /&gt;
        else&lt;br /&gt;
            System.out.println(&amp;quot;Is not a BST&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Determine if two integers add up to given number==&lt;br /&gt;
Given an array of integers and a value, determine if there are any two integers in the array whose sum is equal to the given value. Return true if the sum exists and return false if it does not. Consider this array and the target sums:&lt;br /&gt;
public class SumOfTwo {&lt;br /&gt;
        public static void main(String args[]) {&lt;br /&gt;
            Set&amp;lt;Integer&amp;gt; set = new HashSet&amp;lt;&amp;gt;(); /*Populate this Set with target values*/&lt;br /&gt;
            /*Array of target values*/&lt;br /&gt;
            int[] g = {5, 6, 8, 39, 9, 11, 20, 59, 10, 1};&lt;br /&gt;
            /*Insert the arrays values in the set*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                set.add(g[i]);&lt;br /&gt;
            }&lt;br /&gt;
            /*Set a target number to check for*/&lt;br /&gt;
            int y = 20;&lt;br /&gt;
            /*If there are a set of numbers that would add up, increment this counter*/&lt;br /&gt;
            int counter = 0;&lt;br /&gt;
            /*Pick up a number in the set by turns and assign it to x*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                int x = g[i];&lt;br /&gt;
                /*Check to see if the set contains target minus found number.*/&lt;br /&gt;
                if (set.contains(y - x)) { //if this is true&lt;br /&gt;
                    /*If so, increment the counter by 1*/&lt;br /&gt;
                    counter += 1;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (counter &amp;gt; 0) { /*Some numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            } else { /*No numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are no sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Merge two sorted lists==&lt;br /&gt;
Given two sorted linked lists, merge them so that the resulting linked list is also sorted. Consider two sorted linked lists and the merged list below them as an example.&lt;br /&gt;
import java.util.Stack;&lt;br /&gt;
/*This code merges two ordered lists into one keeping their increasing order&lt;br /&gt;
 * the lists used for testing are in the main function*/&lt;br /&gt;
public class MergeLists {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int data;&lt;br /&gt;
        Node next;&lt;br /&gt;
        Node(int z) {&lt;br /&gt;
            this.data = z;&lt;br /&gt;
            next = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads the values of a list and loads them on a Stack, then reads from the stack*/&lt;br /&gt;
    public static void loadInStack(Node f) {&lt;br /&gt;
        Stack&amp;lt;Integer&amp;gt; pack = new Stack&amp;lt;&amp;gt;();&lt;br /&gt;
        if (f == null)&lt;br /&gt;
            return;&lt;br /&gt;
        pack.push(f.data);&lt;br /&gt;
        loadInStack(f.next);&lt;br /&gt;
        System.out.println(pack);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function duplicates the provided list into another one*/&lt;br /&gt;
    public static void duplicateList(Node m) {&lt;br /&gt;
        Node hold = new Node(-1);&lt;br /&gt;
        if (m == null)&lt;br /&gt;
            return;&lt;br /&gt;
        hold.data = m.data;&lt;br /&gt;
        duplicateList(m.next);&lt;br /&gt;
        System.out.println(hold.data);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads from two lists picking the lesser of*/&lt;br /&gt;
    /*It takes in two lists as variables a and b*/&lt;br /&gt;
    public static void pickTwo(Node a, Node b) {&lt;br /&gt;
        /*This is a dummy list initialized with -1*/&lt;br /&gt;
        Node dummyList = new Node(-1);&lt;br /&gt;
        while (a != null &amp;amp;&amp;amp; b != null) {&lt;br /&gt;
            if (a.data &amp;lt;= b.data) {&lt;br /&gt;
                /*populate the dummy list from a, if smaller*/&lt;br /&gt;
                dummyList.data = a.data;&lt;br /&gt;
                /*Increment a*/&lt;br /&gt;
                a = a.next;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*populate the dummy list from b, if smaller*/&lt;br /&gt;
                dummyList.data = b.data;&lt;br /&gt;
                /*Increment b*/&lt;br /&gt;
                b = b.next;&lt;br /&gt;
            }&lt;br /&gt;
            /*Print when done*/&lt;br /&gt;
            System.out.print(dummyList.data + &amp;quot; -&amp;gt; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Node f = new Node(2);&lt;br /&gt;
        Node g = new Node(7);&lt;br /&gt;
        Node h = new Node(8);&lt;br /&gt;
        Node i = new Node(11);&lt;br /&gt;
&lt;br /&gt;
        f.next = g;&lt;br /&gt;
        g.next = h;&lt;br /&gt;
        h.next = i;&lt;br /&gt;
&lt;br /&gt;
        //printNodes(f);&lt;br /&gt;
&lt;br /&gt;
        Node k = new Node(4);&lt;br /&gt;
        Node l = new Node(6);&lt;br /&gt;
        Node m = new Node(9);&lt;br /&gt;
        Node n = new Node(10);&lt;br /&gt;
        Node o = new Node(12);&lt;br /&gt;
&lt;br /&gt;
        k.next = l;&lt;br /&gt;
        l.next = m;&lt;br /&gt;
        m.next = n;&lt;br /&gt;
        n.next = o;&lt;br /&gt;
&lt;br /&gt;
        //loadInStack(f);&lt;br /&gt;
        //duplicateList(k);&lt;br /&gt;
        pickTwo(f, k);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Reverse String==&lt;br /&gt;
&lt;br /&gt;
Reverse the order of words in a given sentence (an array of characters).&lt;br /&gt;
&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class ReverseString {&lt;br /&gt;
    public static void lizy(String[] curr) {&lt;br /&gt;
        LinkedList&amp;lt;String&amp;gt; y = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        for (int g = 0; g &amp;lt;= curr.length - 1; g++) {&lt;br /&gt;
            y.add(curr[g]);&lt;br /&gt;
        }&lt;br /&gt;
        Iterator i = y.descendingIterator();&lt;br /&gt;
        while (i.hasNext()) {&lt;br /&gt;
            System.out.print(i.next() + &amp;quot; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        String given = &amp;quot;Hello World&amp;quot;;&lt;br /&gt;
        String[] given_array = given.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String lineOfCurrencies = &amp;quot;USD JPY AUD SGD HKD CAD CHF GBP EURO INR&amp;quot;;&lt;br /&gt;
        String multispace = &amp;quot;Kenya    Uganda Tanzania   Burundi     Rwanda&amp;quot;;&lt;br /&gt;
        String[] currencies = lineOfCurrencies.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String[] ms = multispace.split(&amp;quot;\\s+&amp;quot;);&lt;br /&gt;
        ReverseString.lizy(given_array);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Level Order Traversal of Binary Tree==&lt;br /&gt;
&lt;br /&gt;
Given the root of a binary tree, display the node values at each level. Node values for all levels should be displayed on separate lines. Let’s take a look at the below binary tree.&lt;br /&gt;
&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class Lot {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int v) {&lt;br /&gt;
            this.value = v;&lt;br /&gt;
            this.left = this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public Lot() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    void lot() {&lt;br /&gt;
        LinkedList&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        //Queue&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;Node&amp;gt;();&lt;br /&gt;
        queue.add(root);&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Node tempNode = queue.removeFirst();&lt;br /&gt;
            //Node tempNode = queue.poll();&lt;br /&gt;
            System.out.print(tempNode.value + &amp;quot; &amp;quot;);&lt;br /&gt;
            if (tempNode.left != null)&lt;br /&gt;
                queue.add(tempNode.left);&lt;br /&gt;
            if (tempNode.right != null)&lt;br /&gt;
                queue.add(tempNode.right);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Lot l = new Lot();&lt;br /&gt;
        l.root = new Node(100);&lt;br /&gt;
        l.root.left = new Node(50);&lt;br /&gt;
        l.root.right = new Node(200);&lt;br /&gt;
        l.root.left.left = new Node(25);&lt;br /&gt;
        l.root.left.right = new Node(75);&lt;br /&gt;
        l.root.right.right = new Node(350);&lt;br /&gt;
        System.out.println(&amp;quot;Level order traversal is as follows: &amp;quot;);&lt;br /&gt;
        l.lot();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==String Segmentation==&lt;br /&gt;
You are given a dictionary of words and a large input string. You have to find out whether the input string can be completely segmented into the words of a given dictionary. The following two examples elaborate on the problem further.&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
&lt;br /&gt;
public class Dictionary {&lt;br /&gt;
    boolean pair(Set&amp;lt;String&amp;gt; dictionary, String a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length(); i++) {&lt;br /&gt;
            String first_word = a.substring(0, i);&lt;br /&gt;
            if (dictionary.contains(first_word)) {&lt;br /&gt;
                String second_word = a.substring(i);&lt;br /&gt;
                if (dictionary.contains(second_word) || pair(dictionary, second_word)) {&lt;br /&gt;
                    return true;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        Dictionary dictionary = new Dictionary();&lt;br /&gt;
        Set&amp;lt;String&amp;gt; dict = new HashSet&amp;lt;&amp;gt;();&lt;br /&gt;
        dict.add(&amp;quot;geo&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;science&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;politics&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;thermal&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;physical&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;mis&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;under&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;stand&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;understand&amp;quot;);&lt;br /&gt;
        String word = &amp;quot;misunderstand&amp;quot;;&lt;br /&gt;
        if (dictionary.pair(dict, word)) {&lt;br /&gt;
            System.out.println(&amp;quot;The test word &amp;quot; + word + &amp;quot; fits in two words in the dictionary&amp;quot;);&lt;br /&gt;
        } else {&lt;br /&gt;
            System.out.println(&amp;quot;The test word &amp;quot; + word + &amp;quot; does not make dictionary words&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Computing number combinations==&lt;br /&gt;
Suppose we have coin denominations of [1, 2, 5] and the total amount is 7. We can make changes in the following 6 ways:&lt;br /&gt;
&lt;br /&gt;
public class Combinations {&lt;br /&gt;
    static int changeOptions(int[] denominations, int amount) {&lt;br /&gt;
        int[] solution = new int[amount + 1];&lt;br /&gt;
        solution[0] = 1;&lt;br /&gt;
        for (int x : denominations) {&lt;br /&gt;
            for (int i = x; i &amp;lt; (amount + 1); ++i) {&lt;br /&gt;
                solution[i] += solution[i - x];&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return solution[solution.length - 1];&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        int[] denominations = new int[]{1, 2, 5, 10};&lt;br /&gt;
        int amount = 5;&lt;br /&gt;
        int result = changeOptions(denominations, amount);&lt;br /&gt;
        System.out.println(&amp;quot;There are &amp;quot; + result + &amp;quot; combinations in forming &amp;quot; + amount + &amp;quot; given the factors below: &amp;quot;);&lt;br /&gt;
        for (int denomination : denominations) {&lt;br /&gt;
            System.out.println(denomination);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Sum of two numbers==&lt;br /&gt;
Are there two numbers in the provided set that add up to the given number?&lt;br /&gt;
&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
&lt;br /&gt;
public class SumOfTwo {&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Set&amp;lt;Integer&amp;gt; set = new HashSet&amp;lt;&amp;gt;(); /*Populate this Set with target values*/&lt;br /&gt;
        /*Array of target values*/&lt;br /&gt;
        int[] g = {5, 6, 8, 39, 9, 11, 20, 59, 10, 1};&lt;br /&gt;
        /*Insert the arrays values in the set*/&lt;br /&gt;
        for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
            set.add(g[i]);&lt;br /&gt;
        }&lt;br /&gt;
        /*Set a target number to check for*/&lt;br /&gt;
        int y = 20;&lt;br /&gt;
        /*If there are a set of numbers that would add up, increment this counter*/&lt;br /&gt;
        int counter = 0;&lt;br /&gt;
        /*Pick up a number in the set by turns and assign it to x*/&lt;br /&gt;
        for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
            int x = g[i];&lt;br /&gt;
            /*Check to see if the set contains target minus found number.*/&lt;br /&gt;
            if (set.contains(y - x)) { //if this is true&lt;br /&gt;
                /*If so, increment the counter by 1*/&lt;br /&gt;
                counter += 1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        if (counter &amp;gt; 0) { /*Some numbers add up*/&lt;br /&gt;
            System.out.println(&amp;quot;There are sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
        } else { /*No numbers add up*/&lt;br /&gt;
            System.out.println(&amp;quot;There are no sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=Algorithms&amp;diff=150</id>
		<title>Algorithms</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=Algorithms&amp;diff=150"/>
		<updated>2022-10-25T16:44:11Z</updated>

		<summary type="html">&lt;p&gt;Leksy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Java Graph Implementation with Search Methods==&lt;br /&gt;
&lt;br /&gt;
The algorithm below implements the organization chart below:&lt;br /&gt;
&lt;br /&gt;
Jimbo Jones is employee id 38 and is the President.&lt;br /&gt;
&lt;br /&gt;
Mike McCobb, id 39, is a VP and reports to Jimbo Jones.&lt;br /&gt;
&lt;br /&gt;
Elda Two, id 43, is a VP and reports to Jimbo Jones.&lt;br /&gt;
&lt;br /&gt;
Simon Sneath, id 48, is a VP and reports to Jimbo Jones.&lt;br /&gt;
&lt;br /&gt;
Tim Scott, id 56, is a Manager and reports to Mike McCobb.&lt;br /&gt;
&lt;br /&gt;
Bob Tilman, id 58, is a Manager and reports to Mike McCobb.&lt;br /&gt;
&lt;br /&gt;
Andrew Cole, id 78, is an Analyst and reports to Tim Scott.&lt;br /&gt;
&lt;br /&gt;
Matt Lemon, id 83, is an Analyst and reports to Tim Scott.&lt;br /&gt;
&lt;br /&gt;
Chris Lock, id 88, is an Analyst and reports to Tim Scott.&lt;br /&gt;
&lt;br /&gt;
Agnes White, id 71, is an Accountant and reports to Bob Tilman.&lt;br /&gt;
&lt;br /&gt;
George Mills, id 61, is a Manager and reports to Elda Two.&lt;br /&gt;
&lt;br /&gt;
Thomas Wells, id 59, is a Manager and reports to Elda Two.&lt;br /&gt;
&lt;br /&gt;
Zip Two, id 63, is Manager and also reports to Elda Two.&lt;br /&gt;
&lt;br /&gt;
Rasta Him, id 73, is a Technician and reports to Thomas Wells.&lt;br /&gt;
&lt;br /&gt;
Claire Collins, id 89, is a Supervisor and reports to George Mills.&lt;br /&gt;
&lt;br /&gt;
Jim Four, id 95, is a Receptionist and reports to Claire Collins.&lt;br /&gt;
&lt;br /&gt;
Tom Flat, id 104, is a Receptionist who reports to Claire Collins.&lt;br /&gt;
&lt;br /&gt;
Grace Marks, id 64, is a Manager and reports to Simon Sneath.&lt;br /&gt;
&lt;br /&gt;
Dan Four, id 68, is a Manager and reports to Simon Sneath.&lt;br /&gt;
&lt;br /&gt;
Shad Fifty, id 117, is in Security and reports to Dan Four.&lt;br /&gt;
&lt;br /&gt;
Tall Nephew, id 108, is in Legal and reports to Grace Marks.&lt;br /&gt;
&lt;br /&gt;
Short Nephew, id 109, is in Legal and reports to Grace Marks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class Chart {&lt;br /&gt;
    static class Employee {&lt;br /&gt;
        int id;&lt;br /&gt;
        String firstName;&lt;br /&gt;
        String lastName;&lt;br /&gt;
        String jobTitle;&lt;br /&gt;
        boolean mapped;&lt;br /&gt;
&lt;br /&gt;
        Employee(int id, String fn, String ln, String jt) {&lt;br /&gt;
            this.id = id;&lt;br /&gt;
            this.jobTitle = jt;&lt;br /&gt;
            this.firstName = fn;&lt;br /&gt;
            this.lastName = ln;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void map() {&lt;br /&gt;
            mapped = true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void unmap() {&lt;br /&gt;
            mapped = false;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private final HashMap&amp;lt;Employee, LinkedList&amp;lt;Employee&amp;gt;&amp;gt; assignment;&lt;br /&gt;
&lt;br /&gt;
    public Chart(boolean directed) {&lt;br /&gt;
        assignment = new HashMap&amp;lt;&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdgeHelper(Employee a, Employee b) {&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; e = assignment.get(a);&lt;br /&gt;
        if (e != null) {&lt;br /&gt;
            assignment.remove(b);&lt;br /&gt;
        } else&lt;br /&gt;
            e = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        e.add(b);&lt;br /&gt;
        assignment.put(a, e);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdge(Employee boss, Employee subordinate) {&lt;br /&gt;
        if (!assignment.containsKey(boss))&lt;br /&gt;
            assignment.put(boss, null);&lt;br /&gt;
        if (!assignment.containsKey(subordinate))&lt;br /&gt;
            assignment.put(subordinate, null);&lt;br /&gt;
        addEdgeHelper(boss, subordinate);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void depthFirstSearch(Employee employee) {&lt;br /&gt;
        employee.map();&lt;br /&gt;
        System.out.println(employee.firstName + &amp;quot; &amp;quot; + employee.lastName + &amp;quot; is a &amp;quot; + employee.jobTitle);&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; neighbors = assignment.get(employee);&lt;br /&gt;
        if (neighbors == null)&lt;br /&gt;
            return;&lt;br /&gt;
        for (Employee e : neighbors) {&lt;br /&gt;
            if (!e.mapped)&lt;br /&gt;
                depthFirstSearch(e);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void breadthFirstSearch(Employee employee) {&lt;br /&gt;
        /*Check if target item is null - if so quit*/&lt;br /&gt;
        if (employee == null)&lt;br /&gt;
            return;&lt;br /&gt;
        /*Declare a queue using LinkedList and add the target item*/&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        queue.add(employee);&lt;br /&gt;
        /*As long as the queue has data get the first in item .removeFirst*/&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Employee currentFirst = queue.removeFirst();&lt;br /&gt;
            /*If visited move on*/&lt;br /&gt;
            if (currentFirst.mapped) {&lt;br /&gt;
                continue;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*else visit it and print it*/&lt;br /&gt;
                currentFirst.map();&lt;br /&gt;
                System.out.println(currentFirst.id + &amp;quot;: &amp;quot; + currentFirst.firstName + &amp;quot; &amp;quot; + currentFirst.lastName + &amp;quot; - &amp;quot; + currentFirst.jobTitle);&lt;br /&gt;
            }&lt;br /&gt;
            /*Find neighbors of the current item*/&lt;br /&gt;
            LinkedList&amp;lt;Employee&amp;gt; allNeighbors = assignment.get(currentFirst);&lt;br /&gt;
            /*If there are none move on*/&lt;br /&gt;
            if (allNeighbors == null)&lt;br /&gt;
                continue;&lt;br /&gt;
            /*else if there are some and not visited, add them to the queue and the process starts over*/&lt;br /&gt;
            for (Employee e : allNeighbors) {&lt;br /&gt;
                if (!e.mapped)&lt;br /&gt;
                    queue.add(e);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void resetMapping() {&lt;br /&gt;
        for (Employee e : assignment.keySet()) {&lt;br /&gt;
            e.unmap();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Employee a = new Employee(38, &amp;quot;Jimbo&amp;quot;, &amp;quot;Jones&amp;quot;, &amp;quot;President&amp;quot;);&lt;br /&gt;
        Employee b = new Employee(39, &amp;quot;Mike&amp;quot;, &amp;quot;McCobb&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee c = new Employee(43, &amp;quot;Elda&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee d = new Employee(48, &amp;quot;Simon&amp;quot;, &amp;quot;Sneeth&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee e = new Employee(56, &amp;quot;Tim&amp;quot;, &amp;quot;Scott&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee f = new Employee(58, &amp;quot;Bob&amp;quot;, &amp;quot;Tilman&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee g = new Employee(78, &amp;quot;Andrew&amp;quot;, &amp;quot;Cole&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee h = new Employee(83, &amp;quot;Matt&amp;quot;, &amp;quot;Lemon&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee i = new Employee(88, &amp;quot;Chris&amp;quot;, &amp;quot;Lock&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee j = new Employee(71, &amp;quot;Agnes&amp;quot;, &amp;quot;White&amp;quot;, &amp;quot;Accountant&amp;quot;);&lt;br /&gt;
        Employee k = new Employee(61, &amp;quot;George&amp;quot;, &amp;quot;Mills&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee l = new Employee(59, &amp;quot;Thomas&amp;quot;, &amp;quot;Wells&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee m = new Employee(63, &amp;quot;Zip&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee n = new Employee(73, &amp;quot;Rasta&amp;quot;, &amp;quot;Him&amp;quot;, &amp;quot;Technician&amp;quot;);&lt;br /&gt;
        Employee o = new Employee(89, &amp;quot;Claire&amp;quot;, &amp;quot;Collins&amp;quot;, &amp;quot;Supervisor&amp;quot;);&lt;br /&gt;
        Employee p = new Employee(95, &amp;quot;Jim&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee q = new Employee(104, &amp;quot;Tom&amp;quot;, &amp;quot;Flat&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee r = new Employee(64, &amp;quot;Grace&amp;quot;, &amp;quot;Marks&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee s = new Employee(68, &amp;quot;Dan&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee t = new Employee(117, &amp;quot;Shad&amp;quot;, &amp;quot;Fifty&amp;quot;, &amp;quot;Security&amp;quot;);&lt;br /&gt;
        Employee u = new Employee(108, &amp;quot;Tall&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
        Employee v = new Employee(109, &amp;quot;Short&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        Chart chart = new Chart(true);&lt;br /&gt;
        chart.addEdge(a, b);&lt;br /&gt;
        chart.addEdge(a, c);&lt;br /&gt;
        chart.addEdge(a, d);&lt;br /&gt;
        chart.addEdge(b, e);&lt;br /&gt;
        chart.addEdge(b, f);&lt;br /&gt;
        chart.addEdge(e, g);&lt;br /&gt;
        chart.addEdge(e, h);&lt;br /&gt;
        chart.addEdge(e, i);&lt;br /&gt;
        chart.addEdge(f, j);&lt;br /&gt;
        chart.addEdge(c, k);&lt;br /&gt;
        chart.addEdge(c, l);&lt;br /&gt;
        chart.addEdge(c, m);&lt;br /&gt;
        chart.addEdge(l, n);&lt;br /&gt;
        chart.addEdge(k, o);&lt;br /&gt;
        chart.addEdge(o, p);&lt;br /&gt;
        chart.addEdge(o, q);&lt;br /&gt;
        chart.addEdge(d, r);&lt;br /&gt;
        chart.addEdge(d, s);&lt;br /&gt;
        chart.addEdge(s, t);&lt;br /&gt;
        chart.addEdge(r, u);&lt;br /&gt;
        chart.addEdge(r, v);&lt;br /&gt;
        //System.out.println(a.firstName + &amp;quot; &amp;quot; + a.lastName + &amp;quot; &amp;quot; + a.jobTitle + &amp;quot; &amp;quot; + a.id);&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        //chart.depthFirstSearch(k);&lt;br /&gt;
&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        chart.breadthFirstSearch(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Find missing number==&lt;br /&gt;
You are given an array of positive numbers from 1 to n, such that all numbers from 1 to n are present except one number x. You have to find x. The input array is not sorted. Look at the below array and give it a try before checking the solution.&lt;br /&gt;
&lt;br /&gt;
The missing number = a sum of the provided array subtracted from a sum of indices + 2&lt;br /&gt;
example 1, 2, 4 missing is 3 = (1 +2 +3+4) - (1 +2+4)&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
public class MissingNum {&lt;br /&gt;
    public static int findMissing(List&amp;lt;Integer&amp;gt; l) {&lt;br /&gt;
        int tot_prov = 0;&lt;br /&gt;
        for (Integer integer : l) {&lt;br /&gt;
            tot_prov += integer;&lt;br /&gt;
        }&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; k = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;
        int tot_req = 0;&lt;br /&gt;
        for (int i = 0; i &amp;lt; l.size() + 2; i++) {&lt;br /&gt;
            k.add(i);&lt;br /&gt;
            tot_req += k.get(i);&lt;br /&gt;
        }&lt;br /&gt;
        return tot_req - tot_prov;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; g = Arrays.asList(8, 5, 3, 2, 4, 1, 7);&lt;br /&gt;
        System.out.println(&amp;quot;The missing number is &amp;quot; + findMissing(g));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Mergesort==&lt;br /&gt;
public class MergeSort {&lt;br /&gt;
&lt;br /&gt;
    private static Comparable[] aux;&lt;br /&gt;
&lt;br /&gt;
    public static void sort(Comparable[] a) {&lt;br /&gt;
        aux = new Comparable[a.length];&lt;br /&gt;
        sort(a, 0, a.length - 1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void merge(Comparable[] a, int lo, int mid, int hi) {&lt;br /&gt;
        assert isSorted(a, lo, mid);&lt;br /&gt;
        assert isSorted(a, mid + 1, hi);&lt;br /&gt;
        //copy for [] a to [] aux&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            aux[k] = a[k];&lt;br /&gt;
        }&lt;br /&gt;
        // the merging process&lt;br /&gt;
        // i is the first index of the first half of the array&lt;br /&gt;
        // j is the first index of the second half of the array&lt;br /&gt;
        int i = lo, j = mid + 1;&lt;br /&gt;
&lt;br /&gt;
        // for every value of k - the indices of [] a&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            /*Left half exhausted take from the right*/&lt;br /&gt;
            if (i &amp;gt; mid)&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Right half exhausted take from the left*/&lt;br /&gt;
            else if (j &amp;gt; hi)&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
                /*Current key on the right less than current key on the left take from the right*/&lt;br /&gt;
            else if (less(aux[j], aux[i]))&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Current key on the right greater than current key on the left take from the left */&lt;br /&gt;
            else&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
        }&lt;br /&gt;
        assert isSorted(a, lo, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void sort(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        if (hi &amp;lt;= lo)&lt;br /&gt;
            return;&lt;br /&gt;
        int mid = lo + (hi - lo) / 2;&lt;br /&gt;
        sort(a, lo, mid);&lt;br /&gt;
        sort(a, mid + 1, hi);&lt;br /&gt;
        merge(a, lo, mid, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean less(Comparable v, Comparable w) {&lt;br /&gt;
        return v.compareTo(w) &amp;lt; 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean isSorted(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        for (int i = lo + 1; i &amp;lt;= hi; i++)&lt;br /&gt;
            if (less(a[i], a[i - 1])) return false;&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void show(Comparable[] a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length; i++) {&lt;br /&gt;
            //System.out.print(a[i]);&lt;br /&gt;
            System.out.println(a[i]);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        // Comparable[] a = {&amp;quot;E&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;A&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;T&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
        Comparable[] aa = {&amp;quot;A&amp;quot;, &amp;quot;X&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;};&lt;br /&gt;
        Comparable[] bb = {&amp;quot;H&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;J&amp;quot;, &amp;quot;Y&amp;quot;, &amp;quot;Z&amp;quot;};&lt;br /&gt;
        /*Merge the two comparable arrays*/&lt;br /&gt;
        Comparable[] a = new Comparable[aa.length + bb.length];&lt;br /&gt;
        System.arraycopy(aa, 0, a, 0, aa.length);&lt;br /&gt;
        System.arraycopy(bb, 0, a, aa.length, bb.length);&lt;br /&gt;
&lt;br /&gt;
        MergeSort.sort(a);&lt;br /&gt;
        show(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Binary Search==&lt;br /&gt;
public class BinarySearch {&lt;br /&gt;
    public static int find(int[] arr, int target) {&lt;br /&gt;
        int left = 0;&lt;br /&gt;
        int right = arr.length - 1;&lt;br /&gt;
        while (left &amp;lt;= right) {&lt;br /&gt;
            int mid = left + (right - left);&lt;br /&gt;
            if (arr[mid] == target)&lt;br /&gt;
                return mid;&lt;br /&gt;
            if (arr[mid] &amp;lt; target) {&lt;br /&gt;
                left = mid + 1;&lt;br /&gt;
            } else {&lt;br /&gt;
                right = mid - 1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return -1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        int[] f = {1, 10, 20, 47, 59, 63, 75, 88, 99, 107, 120, 133, 155, 162, 176, 188, 199, 200, 210, 222, 223};&lt;br /&gt;
        int t = 162;&lt;br /&gt;
        System.out.println(find(f, t));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Validate Binary Search Tree==&lt;br /&gt;
&lt;br /&gt;
Given a Binary Tree, figure out whether it’s a Binary Search Tree. In a binary search tree, each node’s key value is smaller than the key value of all nodes in the right subtree, and is greater than the key values of all nodes in the left subtree. Below is an example of a binary tree that is a valid BST.&lt;br /&gt;
&lt;br /&gt;
public class BinarySearchTree {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int value) {&lt;br /&gt;
            this.value = value;&lt;br /&gt;
            this.left = null;&lt;br /&gt;
            this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public BinarySearchTree() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    public boolean isbst(Node root, Node l, Node r) {&lt;br /&gt;
        if (root == null)&lt;br /&gt;
            return true;&lt;br /&gt;
        if (l != null &amp;amp;&amp;amp; l.value &amp;gt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        if (r != null &amp;amp;&amp;amp; r.value &amp;lt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        return isbst(root.left, l, root) &amp;amp;&amp;amp; isbst(root.right, root, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        BinarySearchTree bt = new BinarySearchTree();&lt;br /&gt;
        bt.root = new Node(10);&lt;br /&gt;
        bt.root.left = new Node(5);&lt;br /&gt;
        bt.root.right = new Node(15);&lt;br /&gt;
        bt.root.left.left = new Node(4);&lt;br /&gt;
        bt.root.left.right = new Node(7);&lt;br /&gt;
        bt.root.right.left = new Node(13);&lt;br /&gt;
        bt.root.right.right = new Node(26);&lt;br /&gt;
        if (bt.isbst(bt.root, null, null))&lt;br /&gt;
            System.out.println(&amp;quot;Is a BST&amp;quot;);&lt;br /&gt;
        else&lt;br /&gt;
            System.out.println(&amp;quot;Is not a BST&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Determine if two integers add up to given number==&lt;br /&gt;
Given an array of integers and a value, determine if there are any two integers in the array whose sum is equal to the given value. Return true if the sum exists and return false if it does not. Consider this array and the target sums:&lt;br /&gt;
public class SumOfTwo {&lt;br /&gt;
        public static void main(String args[]) {&lt;br /&gt;
            Set&amp;lt;Integer&amp;gt; set = new HashSet&amp;lt;&amp;gt;(); /*Populate this Set with target values*/&lt;br /&gt;
            /*Array of target values*/&lt;br /&gt;
            int[] g = {5, 6, 8, 39, 9, 11, 20, 59, 10, 1};&lt;br /&gt;
            /*Insert the arrays values in the set*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                set.add(g[i]);&lt;br /&gt;
            }&lt;br /&gt;
            /*Set a target number to check for*/&lt;br /&gt;
            int y = 20;&lt;br /&gt;
            /*If there are a set of numbers that would add up, increment this counter*/&lt;br /&gt;
            int counter = 0;&lt;br /&gt;
            /*Pick up a number in the set by turns and assign it to x*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                int x = g[i];&lt;br /&gt;
                /*Check to see if the set contains target minus found number.*/&lt;br /&gt;
                if (set.contains(y - x)) { //if this is true&lt;br /&gt;
                    /*If so, increment the counter by 1*/&lt;br /&gt;
                    counter += 1;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (counter &amp;gt; 0) { /*Some numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            } else { /*No numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are no sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Merge two sorted lists==&lt;br /&gt;
Given two sorted linked lists, merge them so that the resulting linked list is also sorted. Consider two sorted linked lists and the merged list below them as an example.&lt;br /&gt;
import java.util.Stack;&lt;br /&gt;
/*This code merges two ordered lists into one keeping their increasing order&lt;br /&gt;
 * the lists used for testing are in the main function*/&lt;br /&gt;
public class MergeLists {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int data;&lt;br /&gt;
        Node next;&lt;br /&gt;
        Node(int z) {&lt;br /&gt;
            this.data = z;&lt;br /&gt;
            next = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads the values of a list and loads them on a Stack, then reads from the stack*/&lt;br /&gt;
    public static void loadInStack(Node f) {&lt;br /&gt;
        Stack&amp;lt;Integer&amp;gt; pack = new Stack&amp;lt;&amp;gt;();&lt;br /&gt;
        if (f == null)&lt;br /&gt;
            return;&lt;br /&gt;
        pack.push(f.data);&lt;br /&gt;
        loadInStack(f.next);&lt;br /&gt;
        System.out.println(pack);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function duplicates the provided list into another one*/&lt;br /&gt;
    public static void duplicateList(Node m) {&lt;br /&gt;
        Node hold = new Node(-1);&lt;br /&gt;
        if (m == null)&lt;br /&gt;
            return;&lt;br /&gt;
        hold.data = m.data;&lt;br /&gt;
        duplicateList(m.next);&lt;br /&gt;
        System.out.println(hold.data);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads from two lists picking the lesser of*/&lt;br /&gt;
    /*It takes in two lists as variables a and b*/&lt;br /&gt;
    public static void pickTwo(Node a, Node b) {&lt;br /&gt;
        /*This is a dummy list initialized with -1*/&lt;br /&gt;
        Node dummyList = new Node(-1);&lt;br /&gt;
        while (a != null &amp;amp;&amp;amp; b != null) {&lt;br /&gt;
            if (a.data &amp;lt;= b.data) {&lt;br /&gt;
                /*populate the dummy list from a, if smaller*/&lt;br /&gt;
                dummyList.data = a.data;&lt;br /&gt;
                /*Increment a*/&lt;br /&gt;
                a = a.next;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*populate the dummy list from b, if smaller*/&lt;br /&gt;
                dummyList.data = b.data;&lt;br /&gt;
                /*Increment b*/&lt;br /&gt;
                b = b.next;&lt;br /&gt;
            }&lt;br /&gt;
            /*Print when done*/&lt;br /&gt;
            System.out.print(dummyList.data + &amp;quot; -&amp;gt; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Node f = new Node(2);&lt;br /&gt;
        Node g = new Node(7);&lt;br /&gt;
        Node h = new Node(8);&lt;br /&gt;
        Node i = new Node(11);&lt;br /&gt;
&lt;br /&gt;
        f.next = g;&lt;br /&gt;
        g.next = h;&lt;br /&gt;
        h.next = i;&lt;br /&gt;
&lt;br /&gt;
        //printNodes(f);&lt;br /&gt;
&lt;br /&gt;
        Node k = new Node(4);&lt;br /&gt;
        Node l = new Node(6);&lt;br /&gt;
        Node m = new Node(9);&lt;br /&gt;
        Node n = new Node(10);&lt;br /&gt;
        Node o = new Node(12);&lt;br /&gt;
&lt;br /&gt;
        k.next = l;&lt;br /&gt;
        l.next = m;&lt;br /&gt;
        m.next = n;&lt;br /&gt;
        n.next = o;&lt;br /&gt;
&lt;br /&gt;
        //loadInStack(f);&lt;br /&gt;
        //duplicateList(k);&lt;br /&gt;
        pickTwo(f, k);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Reverse String==&lt;br /&gt;
&lt;br /&gt;
Reverse the order of words in a given sentence (an array of characters).&lt;br /&gt;
&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class ReverseString {&lt;br /&gt;
    public static void lizy(String[] curr) {&lt;br /&gt;
        LinkedList&amp;lt;String&amp;gt; y = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        for (int g = 0; g &amp;lt;= curr.length - 1; g++) {&lt;br /&gt;
            y.add(curr[g]);&lt;br /&gt;
        }&lt;br /&gt;
        Iterator i = y.descendingIterator();&lt;br /&gt;
        while (i.hasNext()) {&lt;br /&gt;
            System.out.print(i.next() + &amp;quot; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        String given = &amp;quot;Hello World&amp;quot;;&lt;br /&gt;
        String[] given_array = given.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String lineOfCurrencies = &amp;quot;USD JPY AUD SGD HKD CAD CHF GBP EURO INR&amp;quot;;&lt;br /&gt;
        String multispace = &amp;quot;Kenya    Uganda Tanzania   Burundi     Rwanda&amp;quot;;&lt;br /&gt;
        String[] currencies = lineOfCurrencies.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String[] ms = multispace.split(&amp;quot;\\s+&amp;quot;);&lt;br /&gt;
        ReverseString.lizy(given_array);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Level Order Traversal of Binary Tree==&lt;br /&gt;
&lt;br /&gt;
Given the root of a binary tree, display the node values at each level. Node values for all levels should be displayed on separate lines. Let’s take a look at the below binary tree.&lt;br /&gt;
&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class Lot {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int v) {&lt;br /&gt;
            this.value = v;&lt;br /&gt;
            this.left = this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public Lot() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    void lot() {&lt;br /&gt;
        LinkedList&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        //Queue&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;Node&amp;gt;();&lt;br /&gt;
        queue.add(root);&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Node tempNode = queue.removeFirst();&lt;br /&gt;
            //Node tempNode = queue.poll();&lt;br /&gt;
            System.out.print(tempNode.value + &amp;quot; &amp;quot;);&lt;br /&gt;
            if (tempNode.left != null)&lt;br /&gt;
                queue.add(tempNode.left);&lt;br /&gt;
            if (tempNode.right != null)&lt;br /&gt;
                queue.add(tempNode.right);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Lot l = new Lot();&lt;br /&gt;
        l.root = new Node(100);&lt;br /&gt;
        l.root.left = new Node(50);&lt;br /&gt;
        l.root.right = new Node(200);&lt;br /&gt;
        l.root.left.left = new Node(25);&lt;br /&gt;
        l.root.left.right = new Node(75);&lt;br /&gt;
        l.root.right.right = new Node(350);&lt;br /&gt;
        System.out.println(&amp;quot;Level order traversal is as follows: &amp;quot;);&lt;br /&gt;
        l.lot();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==String Segmentation==&lt;br /&gt;
You are given a dictionary of words and a large input string. You have to find out whether the input string can be completely segmented into the words of a given dictionary. The following two examples elaborate on the problem further.&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
&lt;br /&gt;
public class Dictionary {&lt;br /&gt;
    boolean pair(Set&amp;lt;String&amp;gt; dictionary, String a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length(); i++) {&lt;br /&gt;
            String first_word = a.substring(0, i);&lt;br /&gt;
            if (dictionary.contains(first_word)) {&lt;br /&gt;
                String second_word = a.substring(i);&lt;br /&gt;
                if (dictionary.contains(second_word) || pair(dictionary, second_word)) {&lt;br /&gt;
                    return true;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        Dictionary dictionary = new Dictionary();&lt;br /&gt;
        Set&amp;lt;String&amp;gt; dict = new HashSet&amp;lt;&amp;gt;();&lt;br /&gt;
        dict.add(&amp;quot;geo&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;science&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;politics&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;thermal&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;physical&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;mis&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;under&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;stand&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;understand&amp;quot;);&lt;br /&gt;
        String word = &amp;quot;misunderstand&amp;quot;;&lt;br /&gt;
        if (dictionary.pair(dict, word)) {&lt;br /&gt;
            System.out.println(&amp;quot;The test word &amp;quot; + word + &amp;quot; fits in two words in the dictionary&amp;quot;);&lt;br /&gt;
        } else {&lt;br /&gt;
            System.out.println(&amp;quot;The test word &amp;quot; + word + &amp;quot; does not make dictionary words&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Computing number combinations==&lt;br /&gt;
Suppose we have coin denominations of [1, 2, 5] and the total amount is 7. We can make changes in the following 6 ways:&lt;br /&gt;
&lt;br /&gt;
public class Combinations {&lt;br /&gt;
    static int changeOptions(int[] denominations, int amount) {&lt;br /&gt;
        int[] solution = new int[amount + 1];&lt;br /&gt;
        solution[0] = 1;&lt;br /&gt;
        for (int x : denominations) {&lt;br /&gt;
            for (int i = x; i &amp;lt; (amount + 1); ++i) {&lt;br /&gt;
                solution[i] += solution[i - x];&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return solution[solution.length - 1];&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        int[] denominations = new int[]{1, 2, 5, 10};&lt;br /&gt;
        int amount = 5;&lt;br /&gt;
        int result = changeOptions(denominations, amount);&lt;br /&gt;
        System.out.println(&amp;quot;There are &amp;quot; + result + &amp;quot; combinations in forming &amp;quot; + amount + &amp;quot; given the factors below: &amp;quot;);&lt;br /&gt;
        for (int denomination : denominations) {&lt;br /&gt;
            System.out.println(denomination);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=Algorithms&amp;diff=149</id>
		<title>Algorithms</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=Algorithms&amp;diff=149"/>
		<updated>2022-10-25T16:43:42Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* Java Graph Implementation with Search Methods */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Java Graph Implementation with Search Methods==&lt;br /&gt;
&lt;br /&gt;
The algorithm below implements the organization chart below:&lt;br /&gt;
&lt;br /&gt;
Jimbo Jones is employee id 38 and is the President.&lt;br /&gt;
&lt;br /&gt;
Mike McCobb, id 39, is a VP and reports to Jimbo Jones.&lt;br /&gt;
&lt;br /&gt;
Elda Two, id 43, is a VP and reports to Jimbo Jones.&lt;br /&gt;
&lt;br /&gt;
Simon Sneath, id 48, is a VP and reports to Jimbo Jones.&lt;br /&gt;
&lt;br /&gt;
Tim Scott, id 56, is a Manager and reports to Mike McCobb.&lt;br /&gt;
&lt;br /&gt;
Bob Tilman, id 58, is a Manager and reports to Mike McCobb.&lt;br /&gt;
&lt;br /&gt;
Andrew Cole, id 78, is an Analyst and reports to Tim Scott.&lt;br /&gt;
&lt;br /&gt;
Matt Lemon, id 83, is an Analyst and reports to Tim Scott.&lt;br /&gt;
&lt;br /&gt;
Chris Lock, id 88, is an Analyst and reports to Tim Scott.&lt;br /&gt;
&lt;br /&gt;
Agnes White, id 71, is an Accountant and reports to Bob Tilman.&lt;br /&gt;
&lt;br /&gt;
George Mills, id 61, is a Manager and reports to Elda Two.&lt;br /&gt;
&lt;br /&gt;
Thomas Wells, id 59, is a Manager and reports to Elda Two.&lt;br /&gt;
&lt;br /&gt;
Zip Two, id 63, is Manager and also reports to Elda Two.&lt;br /&gt;
&lt;br /&gt;
Rasta Him, id 73, is a Technician and reports to Thomas Wells.&lt;br /&gt;
&lt;br /&gt;
Claire Collins, id 89, is a Supervisor and reports to George Mills.&lt;br /&gt;
&lt;br /&gt;
Jim Four, id 95, is a Receptionist and reports to Claire Collins.&lt;br /&gt;
&lt;br /&gt;
Tom Flat, id 104, is a Receptionist who reports to Claire Collins.&lt;br /&gt;
&lt;br /&gt;
Grace Marks, id 64, is a Manager and reports to Simon Sneath.&lt;br /&gt;
&lt;br /&gt;
Dan Four, id 68, is a Manager and reports to Simon Sneath.&lt;br /&gt;
&lt;br /&gt;
Shad Fifty, id 117, is in Security and reports to Dan Four.&lt;br /&gt;
&lt;br /&gt;
Tall Nephew, id 108, is in Legal and reports to Grace Marks.&lt;br /&gt;
&lt;br /&gt;
Short Nephew, id 109, is in Legal and reports to Grace Marks.&lt;br /&gt;
&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class Chart {&lt;br /&gt;
    static class Employee {&lt;br /&gt;
        int id;&lt;br /&gt;
        String firstName;&lt;br /&gt;
        String lastName;&lt;br /&gt;
        String jobTitle;&lt;br /&gt;
        boolean mapped;&lt;br /&gt;
&lt;br /&gt;
        Employee(int id, String fn, String ln, String jt) {&lt;br /&gt;
            this.id = id;&lt;br /&gt;
            this.jobTitle = jt;&lt;br /&gt;
            this.firstName = fn;&lt;br /&gt;
            this.lastName = ln;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void map() {&lt;br /&gt;
            mapped = true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void unmap() {&lt;br /&gt;
            mapped = false;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private final HashMap&amp;lt;Employee, LinkedList&amp;lt;Employee&amp;gt;&amp;gt; assignment;&lt;br /&gt;
&lt;br /&gt;
    public Chart(boolean directed) {&lt;br /&gt;
        assignment = new HashMap&amp;lt;&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdgeHelper(Employee a, Employee b) {&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; e = assignment.get(a);&lt;br /&gt;
        if (e != null) {&lt;br /&gt;
            assignment.remove(b);&lt;br /&gt;
        } else&lt;br /&gt;
            e = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        e.add(b);&lt;br /&gt;
        assignment.put(a, e);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdge(Employee boss, Employee subordinate) {&lt;br /&gt;
        if (!assignment.containsKey(boss))&lt;br /&gt;
            assignment.put(boss, null);&lt;br /&gt;
        if (!assignment.containsKey(subordinate))&lt;br /&gt;
            assignment.put(subordinate, null);&lt;br /&gt;
        addEdgeHelper(boss, subordinate);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void depthFirstSearch(Employee employee) {&lt;br /&gt;
        employee.map();&lt;br /&gt;
        System.out.println(employee.firstName + &amp;quot; &amp;quot; + employee.lastName + &amp;quot; is a &amp;quot; + employee.jobTitle);&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; neighbors = assignment.get(employee);&lt;br /&gt;
        if (neighbors == null)&lt;br /&gt;
            return;&lt;br /&gt;
        for (Employee e : neighbors) {&lt;br /&gt;
            if (!e.mapped)&lt;br /&gt;
                depthFirstSearch(e);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void breadthFirstSearch(Employee employee) {&lt;br /&gt;
        /*Check if target item is null - if so quit*/&lt;br /&gt;
        if (employee == null)&lt;br /&gt;
            return;&lt;br /&gt;
        /*Declare a queue using LinkedList and add the target item*/&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        queue.add(employee);&lt;br /&gt;
        /*As long as the queue has data get the first in item .removeFirst*/&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Employee currentFirst = queue.removeFirst();&lt;br /&gt;
            /*If visited move on*/&lt;br /&gt;
            if (currentFirst.mapped) {&lt;br /&gt;
                continue;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*else visit it and print it*/&lt;br /&gt;
                currentFirst.map();&lt;br /&gt;
                System.out.println(currentFirst.id + &amp;quot;: &amp;quot; + currentFirst.firstName + &amp;quot; &amp;quot; + currentFirst.lastName + &amp;quot; - &amp;quot; + currentFirst.jobTitle);&lt;br /&gt;
            }&lt;br /&gt;
            /*Find neighbors of the current item*/&lt;br /&gt;
            LinkedList&amp;lt;Employee&amp;gt; allNeighbors = assignment.get(currentFirst);&lt;br /&gt;
            /*If there are none move on*/&lt;br /&gt;
            if (allNeighbors == null)&lt;br /&gt;
                continue;&lt;br /&gt;
            /*else if there are some and not visited, add them to the queue and the process starts over*/&lt;br /&gt;
            for (Employee e : allNeighbors) {&lt;br /&gt;
                if (!e.mapped)&lt;br /&gt;
                    queue.add(e);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void resetMapping() {&lt;br /&gt;
        for (Employee e : assignment.keySet()) {&lt;br /&gt;
            e.unmap();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Employee a = new Employee(38, &amp;quot;Jimbo&amp;quot;, &amp;quot;Jones&amp;quot;, &amp;quot;President&amp;quot;);&lt;br /&gt;
        Employee b = new Employee(39, &amp;quot;Mike&amp;quot;, &amp;quot;McCobb&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee c = new Employee(43, &amp;quot;Elda&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee d = new Employee(48, &amp;quot;Simon&amp;quot;, &amp;quot;Sneeth&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee e = new Employee(56, &amp;quot;Tim&amp;quot;, &amp;quot;Scott&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee f = new Employee(58, &amp;quot;Bob&amp;quot;, &amp;quot;Tilman&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee g = new Employee(78, &amp;quot;Andrew&amp;quot;, &amp;quot;Cole&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee h = new Employee(83, &amp;quot;Matt&amp;quot;, &amp;quot;Lemon&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee i = new Employee(88, &amp;quot;Chris&amp;quot;, &amp;quot;Lock&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee j = new Employee(71, &amp;quot;Agnes&amp;quot;, &amp;quot;White&amp;quot;, &amp;quot;Accountant&amp;quot;);&lt;br /&gt;
        Employee k = new Employee(61, &amp;quot;George&amp;quot;, &amp;quot;Mills&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee l = new Employee(59, &amp;quot;Thomas&amp;quot;, &amp;quot;Wells&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee m = new Employee(63, &amp;quot;Zip&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee n = new Employee(73, &amp;quot;Rasta&amp;quot;, &amp;quot;Him&amp;quot;, &amp;quot;Technician&amp;quot;);&lt;br /&gt;
        Employee o = new Employee(89, &amp;quot;Claire&amp;quot;, &amp;quot;Collins&amp;quot;, &amp;quot;Supervisor&amp;quot;);&lt;br /&gt;
        Employee p = new Employee(95, &amp;quot;Jim&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee q = new Employee(104, &amp;quot;Tom&amp;quot;, &amp;quot;Flat&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee r = new Employee(64, &amp;quot;Grace&amp;quot;, &amp;quot;Marks&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee s = new Employee(68, &amp;quot;Dan&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee t = new Employee(117, &amp;quot;Shad&amp;quot;, &amp;quot;Fifty&amp;quot;, &amp;quot;Security&amp;quot;);&lt;br /&gt;
        Employee u = new Employee(108, &amp;quot;Tall&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
        Employee v = new Employee(109, &amp;quot;Short&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        Chart chart = new Chart(true);&lt;br /&gt;
        chart.addEdge(a, b);&lt;br /&gt;
        chart.addEdge(a, c);&lt;br /&gt;
        chart.addEdge(a, d);&lt;br /&gt;
        chart.addEdge(b, e);&lt;br /&gt;
        chart.addEdge(b, f);&lt;br /&gt;
        chart.addEdge(e, g);&lt;br /&gt;
        chart.addEdge(e, h);&lt;br /&gt;
        chart.addEdge(e, i);&lt;br /&gt;
        chart.addEdge(f, j);&lt;br /&gt;
        chart.addEdge(c, k);&lt;br /&gt;
        chart.addEdge(c, l);&lt;br /&gt;
        chart.addEdge(c, m);&lt;br /&gt;
        chart.addEdge(l, n);&lt;br /&gt;
        chart.addEdge(k, o);&lt;br /&gt;
        chart.addEdge(o, p);&lt;br /&gt;
        chart.addEdge(o, q);&lt;br /&gt;
        chart.addEdge(d, r);&lt;br /&gt;
        chart.addEdge(d, s);&lt;br /&gt;
        chart.addEdge(s, t);&lt;br /&gt;
        chart.addEdge(r, u);&lt;br /&gt;
        chart.addEdge(r, v);&lt;br /&gt;
        //System.out.println(a.firstName + &amp;quot; &amp;quot; + a.lastName + &amp;quot; &amp;quot; + a.jobTitle + &amp;quot; &amp;quot; + a.id);&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        //chart.depthFirstSearch(k);&lt;br /&gt;
&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        chart.breadthFirstSearch(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Find missing number==&lt;br /&gt;
You are given an array of positive numbers from 1 to n, such that all numbers from 1 to n are present except one number x. You have to find x. The input array is not sorted. Look at the below array and give it a try before checking the solution.&lt;br /&gt;
&lt;br /&gt;
The missing number = a sum of the provided array subtracted from a sum of indices + 2&lt;br /&gt;
example 1, 2, 4 missing is 3 = (1 +2 +3+4) - (1 +2+4)&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
public class MissingNum {&lt;br /&gt;
    public static int findMissing(List&amp;lt;Integer&amp;gt; l) {&lt;br /&gt;
        int tot_prov = 0;&lt;br /&gt;
        for (Integer integer : l) {&lt;br /&gt;
            tot_prov += integer;&lt;br /&gt;
        }&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; k = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;
        int tot_req = 0;&lt;br /&gt;
        for (int i = 0; i &amp;lt; l.size() + 2; i++) {&lt;br /&gt;
            k.add(i);&lt;br /&gt;
            tot_req += k.get(i);&lt;br /&gt;
        }&lt;br /&gt;
        return tot_req - tot_prov;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; g = Arrays.asList(8, 5, 3, 2, 4, 1, 7);&lt;br /&gt;
        System.out.println(&amp;quot;The missing number is &amp;quot; + findMissing(g));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Mergesort==&lt;br /&gt;
public class MergeSort {&lt;br /&gt;
&lt;br /&gt;
    private static Comparable[] aux;&lt;br /&gt;
&lt;br /&gt;
    public static void sort(Comparable[] a) {&lt;br /&gt;
        aux = new Comparable[a.length];&lt;br /&gt;
        sort(a, 0, a.length - 1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void merge(Comparable[] a, int lo, int mid, int hi) {&lt;br /&gt;
        assert isSorted(a, lo, mid);&lt;br /&gt;
        assert isSorted(a, mid + 1, hi);&lt;br /&gt;
        //copy for [] a to [] aux&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            aux[k] = a[k];&lt;br /&gt;
        }&lt;br /&gt;
        // the merging process&lt;br /&gt;
        // i is the first index of the first half of the array&lt;br /&gt;
        // j is the first index of the second half of the array&lt;br /&gt;
        int i = lo, j = mid + 1;&lt;br /&gt;
&lt;br /&gt;
        // for every value of k - the indices of [] a&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            /*Left half exhausted take from the right*/&lt;br /&gt;
            if (i &amp;gt; mid)&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Right half exhausted take from the left*/&lt;br /&gt;
            else if (j &amp;gt; hi)&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
                /*Current key on the right less than current key on the left take from the right*/&lt;br /&gt;
            else if (less(aux[j], aux[i]))&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Current key on the right greater than current key on the left take from the left */&lt;br /&gt;
            else&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
        }&lt;br /&gt;
        assert isSorted(a, lo, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void sort(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        if (hi &amp;lt;= lo)&lt;br /&gt;
            return;&lt;br /&gt;
        int mid = lo + (hi - lo) / 2;&lt;br /&gt;
        sort(a, lo, mid);&lt;br /&gt;
        sort(a, mid + 1, hi);&lt;br /&gt;
        merge(a, lo, mid, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean less(Comparable v, Comparable w) {&lt;br /&gt;
        return v.compareTo(w) &amp;lt; 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean isSorted(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        for (int i = lo + 1; i &amp;lt;= hi; i++)&lt;br /&gt;
            if (less(a[i], a[i - 1])) return false;&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void show(Comparable[] a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length; i++) {&lt;br /&gt;
            //System.out.print(a[i]);&lt;br /&gt;
            System.out.println(a[i]);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        // Comparable[] a = {&amp;quot;E&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;A&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;T&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
        Comparable[] aa = {&amp;quot;A&amp;quot;, &amp;quot;X&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;};&lt;br /&gt;
        Comparable[] bb = {&amp;quot;H&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;J&amp;quot;, &amp;quot;Y&amp;quot;, &amp;quot;Z&amp;quot;};&lt;br /&gt;
        /*Merge the two comparable arrays*/&lt;br /&gt;
        Comparable[] a = new Comparable[aa.length + bb.length];&lt;br /&gt;
        System.arraycopy(aa, 0, a, 0, aa.length);&lt;br /&gt;
        System.arraycopy(bb, 0, a, aa.length, bb.length);&lt;br /&gt;
&lt;br /&gt;
        MergeSort.sort(a);&lt;br /&gt;
        show(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Binary Search==&lt;br /&gt;
public class BinarySearch {&lt;br /&gt;
    public static int find(int[] arr, int target) {&lt;br /&gt;
        int left = 0;&lt;br /&gt;
        int right = arr.length - 1;&lt;br /&gt;
        while (left &amp;lt;= right) {&lt;br /&gt;
            int mid = left + (right - left);&lt;br /&gt;
            if (arr[mid] == target)&lt;br /&gt;
                return mid;&lt;br /&gt;
            if (arr[mid] &amp;lt; target) {&lt;br /&gt;
                left = mid + 1;&lt;br /&gt;
            } else {&lt;br /&gt;
                right = mid - 1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return -1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        int[] f = {1, 10, 20, 47, 59, 63, 75, 88, 99, 107, 120, 133, 155, 162, 176, 188, 199, 200, 210, 222, 223};&lt;br /&gt;
        int t = 162;&lt;br /&gt;
        System.out.println(find(f, t));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Validate Binary Search Tree==&lt;br /&gt;
&lt;br /&gt;
Given a Binary Tree, figure out whether it’s a Binary Search Tree. In a binary search tree, each node’s key value is smaller than the key value of all nodes in the right subtree, and is greater than the key values of all nodes in the left subtree. Below is an example of a binary tree that is a valid BST.&lt;br /&gt;
&lt;br /&gt;
public class BinarySearchTree {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int value) {&lt;br /&gt;
            this.value = value;&lt;br /&gt;
            this.left = null;&lt;br /&gt;
            this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public BinarySearchTree() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    public boolean isbst(Node root, Node l, Node r) {&lt;br /&gt;
        if (root == null)&lt;br /&gt;
            return true;&lt;br /&gt;
        if (l != null &amp;amp;&amp;amp; l.value &amp;gt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        if (r != null &amp;amp;&amp;amp; r.value &amp;lt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        return isbst(root.left, l, root) &amp;amp;&amp;amp; isbst(root.right, root, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        BinarySearchTree bt = new BinarySearchTree();&lt;br /&gt;
        bt.root = new Node(10);&lt;br /&gt;
        bt.root.left = new Node(5);&lt;br /&gt;
        bt.root.right = new Node(15);&lt;br /&gt;
        bt.root.left.left = new Node(4);&lt;br /&gt;
        bt.root.left.right = new Node(7);&lt;br /&gt;
        bt.root.right.left = new Node(13);&lt;br /&gt;
        bt.root.right.right = new Node(26);&lt;br /&gt;
        if (bt.isbst(bt.root, null, null))&lt;br /&gt;
            System.out.println(&amp;quot;Is a BST&amp;quot;);&lt;br /&gt;
        else&lt;br /&gt;
            System.out.println(&amp;quot;Is not a BST&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Determine if two integers add up to given number==&lt;br /&gt;
Given an array of integers and a value, determine if there are any two integers in the array whose sum is equal to the given value. Return true if the sum exists and return false if it does not. Consider this array and the target sums:&lt;br /&gt;
public class SumOfTwo {&lt;br /&gt;
        public static void main(String args[]) {&lt;br /&gt;
            Set&amp;lt;Integer&amp;gt; set = new HashSet&amp;lt;&amp;gt;(); /*Populate this Set with target values*/&lt;br /&gt;
            /*Array of target values*/&lt;br /&gt;
            int[] g = {5, 6, 8, 39, 9, 11, 20, 59, 10, 1};&lt;br /&gt;
            /*Insert the arrays values in the set*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                set.add(g[i]);&lt;br /&gt;
            }&lt;br /&gt;
            /*Set a target number to check for*/&lt;br /&gt;
            int y = 20;&lt;br /&gt;
            /*If there are a set of numbers that would add up, increment this counter*/&lt;br /&gt;
            int counter = 0;&lt;br /&gt;
            /*Pick up a number in the set by turns and assign it to x*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                int x = g[i];&lt;br /&gt;
                /*Check to see if the set contains target minus found number.*/&lt;br /&gt;
                if (set.contains(y - x)) { //if this is true&lt;br /&gt;
                    /*If so, increment the counter by 1*/&lt;br /&gt;
                    counter += 1;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (counter &amp;gt; 0) { /*Some numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            } else { /*No numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are no sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Merge two sorted lists==&lt;br /&gt;
Given two sorted linked lists, merge them so that the resulting linked list is also sorted. Consider two sorted linked lists and the merged list below them as an example.&lt;br /&gt;
import java.util.Stack;&lt;br /&gt;
/*This code merges two ordered lists into one keeping their increasing order&lt;br /&gt;
 * the lists used for testing are in the main function*/&lt;br /&gt;
public class MergeLists {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int data;&lt;br /&gt;
        Node next;&lt;br /&gt;
        Node(int z) {&lt;br /&gt;
            this.data = z;&lt;br /&gt;
            next = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads the values of a list and loads them on a Stack, then reads from the stack*/&lt;br /&gt;
    public static void loadInStack(Node f) {&lt;br /&gt;
        Stack&amp;lt;Integer&amp;gt; pack = new Stack&amp;lt;&amp;gt;();&lt;br /&gt;
        if (f == null)&lt;br /&gt;
            return;&lt;br /&gt;
        pack.push(f.data);&lt;br /&gt;
        loadInStack(f.next);&lt;br /&gt;
        System.out.println(pack);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function duplicates the provided list into another one*/&lt;br /&gt;
    public static void duplicateList(Node m) {&lt;br /&gt;
        Node hold = new Node(-1);&lt;br /&gt;
        if (m == null)&lt;br /&gt;
            return;&lt;br /&gt;
        hold.data = m.data;&lt;br /&gt;
        duplicateList(m.next);&lt;br /&gt;
        System.out.println(hold.data);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads from two lists picking the lesser of*/&lt;br /&gt;
    /*It takes in two lists as variables a and b*/&lt;br /&gt;
    public static void pickTwo(Node a, Node b) {&lt;br /&gt;
        /*This is a dummy list initialized with -1*/&lt;br /&gt;
        Node dummyList = new Node(-1);&lt;br /&gt;
        while (a != null &amp;amp;&amp;amp; b != null) {&lt;br /&gt;
            if (a.data &amp;lt;= b.data) {&lt;br /&gt;
                /*populate the dummy list from a, if smaller*/&lt;br /&gt;
                dummyList.data = a.data;&lt;br /&gt;
                /*Increment a*/&lt;br /&gt;
                a = a.next;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*populate the dummy list from b, if smaller*/&lt;br /&gt;
                dummyList.data = b.data;&lt;br /&gt;
                /*Increment b*/&lt;br /&gt;
                b = b.next;&lt;br /&gt;
            }&lt;br /&gt;
            /*Print when done*/&lt;br /&gt;
            System.out.print(dummyList.data + &amp;quot; -&amp;gt; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Node f = new Node(2);&lt;br /&gt;
        Node g = new Node(7);&lt;br /&gt;
        Node h = new Node(8);&lt;br /&gt;
        Node i = new Node(11);&lt;br /&gt;
&lt;br /&gt;
        f.next = g;&lt;br /&gt;
        g.next = h;&lt;br /&gt;
        h.next = i;&lt;br /&gt;
&lt;br /&gt;
        //printNodes(f);&lt;br /&gt;
&lt;br /&gt;
        Node k = new Node(4);&lt;br /&gt;
        Node l = new Node(6);&lt;br /&gt;
        Node m = new Node(9);&lt;br /&gt;
        Node n = new Node(10);&lt;br /&gt;
        Node o = new Node(12);&lt;br /&gt;
&lt;br /&gt;
        k.next = l;&lt;br /&gt;
        l.next = m;&lt;br /&gt;
        m.next = n;&lt;br /&gt;
        n.next = o;&lt;br /&gt;
&lt;br /&gt;
        //loadInStack(f);&lt;br /&gt;
        //duplicateList(k);&lt;br /&gt;
        pickTwo(f, k);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Reverse String==&lt;br /&gt;
&lt;br /&gt;
Reverse the order of words in a given sentence (an array of characters).&lt;br /&gt;
&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class ReverseString {&lt;br /&gt;
    public static void lizy(String[] curr) {&lt;br /&gt;
        LinkedList&amp;lt;String&amp;gt; y = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        for (int g = 0; g &amp;lt;= curr.length - 1; g++) {&lt;br /&gt;
            y.add(curr[g]);&lt;br /&gt;
        }&lt;br /&gt;
        Iterator i = y.descendingIterator();&lt;br /&gt;
        while (i.hasNext()) {&lt;br /&gt;
            System.out.print(i.next() + &amp;quot; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        String given = &amp;quot;Hello World&amp;quot;;&lt;br /&gt;
        String[] given_array = given.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String lineOfCurrencies = &amp;quot;USD JPY AUD SGD HKD CAD CHF GBP EURO INR&amp;quot;;&lt;br /&gt;
        String multispace = &amp;quot;Kenya    Uganda Tanzania   Burundi     Rwanda&amp;quot;;&lt;br /&gt;
        String[] currencies = lineOfCurrencies.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String[] ms = multispace.split(&amp;quot;\\s+&amp;quot;);&lt;br /&gt;
        ReverseString.lizy(given_array);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Level Order Traversal of Binary Tree==&lt;br /&gt;
&lt;br /&gt;
Given the root of a binary tree, display the node values at each level. Node values for all levels should be displayed on separate lines. Let’s take a look at the below binary tree.&lt;br /&gt;
&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class Lot {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int v) {&lt;br /&gt;
            this.value = v;&lt;br /&gt;
            this.left = this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public Lot() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    void lot() {&lt;br /&gt;
        LinkedList&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        //Queue&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;Node&amp;gt;();&lt;br /&gt;
        queue.add(root);&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Node tempNode = queue.removeFirst();&lt;br /&gt;
            //Node tempNode = queue.poll();&lt;br /&gt;
            System.out.print(tempNode.value + &amp;quot; &amp;quot;);&lt;br /&gt;
            if (tempNode.left != null)&lt;br /&gt;
                queue.add(tempNode.left);&lt;br /&gt;
            if (tempNode.right != null)&lt;br /&gt;
                queue.add(tempNode.right);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Lot l = new Lot();&lt;br /&gt;
        l.root = new Node(100);&lt;br /&gt;
        l.root.left = new Node(50);&lt;br /&gt;
        l.root.right = new Node(200);&lt;br /&gt;
        l.root.left.left = new Node(25);&lt;br /&gt;
        l.root.left.right = new Node(75);&lt;br /&gt;
        l.root.right.right = new Node(350);&lt;br /&gt;
        System.out.println(&amp;quot;Level order traversal is as follows: &amp;quot;);&lt;br /&gt;
        l.lot();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==String Segmentation==&lt;br /&gt;
You are given a dictionary of words and a large input string. You have to find out whether the input string can be completely segmented into the words of a given dictionary. The following two examples elaborate on the problem further.&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
&lt;br /&gt;
public class Dictionary {&lt;br /&gt;
    boolean pair(Set&amp;lt;String&amp;gt; dictionary, String a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length(); i++) {&lt;br /&gt;
            String first_word = a.substring(0, i);&lt;br /&gt;
            if (dictionary.contains(first_word)) {&lt;br /&gt;
                String second_word = a.substring(i);&lt;br /&gt;
                if (dictionary.contains(second_word) || pair(dictionary, second_word)) {&lt;br /&gt;
                    return true;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        Dictionary dictionary = new Dictionary();&lt;br /&gt;
        Set&amp;lt;String&amp;gt; dict = new HashSet&amp;lt;&amp;gt;();&lt;br /&gt;
        dict.add(&amp;quot;geo&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;science&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;politics&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;thermal&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;physical&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;mis&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;under&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;stand&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;understand&amp;quot;);&lt;br /&gt;
        String word = &amp;quot;misunderstand&amp;quot;;&lt;br /&gt;
        if (dictionary.pair(dict, word)) {&lt;br /&gt;
            System.out.println(&amp;quot;The test word &amp;quot; + word + &amp;quot; fits in two words in the dictionary&amp;quot;);&lt;br /&gt;
        } else {&lt;br /&gt;
            System.out.println(&amp;quot;The test word &amp;quot; + word + &amp;quot; does not make dictionary words&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Computing number combinations==&lt;br /&gt;
Suppose we have coin denominations of [1, 2, 5] and the total amount is 7. We can make changes in the following 6 ways:&lt;br /&gt;
&lt;br /&gt;
public class Combinations {&lt;br /&gt;
    static int changeOptions(int[] denominations, int amount) {&lt;br /&gt;
        int[] solution = new int[amount + 1];&lt;br /&gt;
        solution[0] = 1;&lt;br /&gt;
        for (int x : denominations) {&lt;br /&gt;
            for (int i = x; i &amp;lt; (amount + 1); ++i) {&lt;br /&gt;
                solution[i] += solution[i - x];&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return solution[solution.length - 1];&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        int[] denominations = new int[]{1, 2, 5, 10};&lt;br /&gt;
        int amount = 5;&lt;br /&gt;
        int result = changeOptions(denominations, amount);&lt;br /&gt;
        System.out.println(&amp;quot;There are &amp;quot; + result + &amp;quot; combinations in forming &amp;quot; + amount + &amp;quot; given the factors below: &amp;quot;);&lt;br /&gt;
        for (int denomination : denominations) {&lt;br /&gt;
            System.out.println(denomination);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=Algorithms&amp;diff=148</id>
		<title>Algorithms</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=Algorithms&amp;diff=148"/>
		<updated>2022-10-25T16:41:33Z</updated>

		<summary type="html">&lt;p&gt;Leksy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Java Graph Implementation with Search Methods==&lt;br /&gt;
&lt;br /&gt;
The algorithm below implements the organization chart below:&lt;br /&gt;
&lt;br /&gt;
Jimbo Jones is employee id 38 and is the President.&lt;br /&gt;
Mike McCobb, id 39, is a VP and reports to Jimbo Jones.&lt;br /&gt;
Elda Two, id 43, is a VP and reports to Jimbo Jones.&lt;br /&gt;
Simon Sneath, id 48, is a VP and reports to Jimbo Jones.&lt;br /&gt;
Tim Scott, id 56, is a Manager and reports to Mike McCobb.&lt;br /&gt;
Bob Tilman, id 58, is a Manager and reports to Mike McCobb.&lt;br /&gt;
Andrew Cole, id 78, is an Analyst and reports to Tim Scott.&lt;br /&gt;
Matt Lemon, id 83, is an Analyst and reports to Tim Scott.&lt;br /&gt;
Chris Lock, id 88, is an Analyst and reports to Tim Scott.&lt;br /&gt;
Agnes White, id 71, is an Accountant and reports to Bob Tilman.&lt;br /&gt;
George Mills, id 61, is a Manager and reports to Elda Two.&lt;br /&gt;
Thomas Wells, id 59, is a Manager and reports to Elda Two.&lt;br /&gt;
Zip Two, id 63, is Manager and also reports to Elda Two.&lt;br /&gt;
Rasta Him, id 73, is a Technician and reports to Thomas Wells.&lt;br /&gt;
Claire Collins, id 89, is a Supervisor and reports to George Mills.&lt;br /&gt;
Jim Four, id 95, is a Receptionist and reports to Claire Collins.&lt;br /&gt;
Tom Flat, id 104, is a Receptionist who reports to Claire Collins.&lt;br /&gt;
Grace Marks, id 64, is a Manager and reports to Simon Sneath.&lt;br /&gt;
Dan Four, id 68, is a Manager and reports to Simon Sneath.&lt;br /&gt;
Shad Fifty, id 117, is in Security and reports to Dan Four.&lt;br /&gt;
Tall Nephew, id 108, is in Legal and reports to Grace Marks&lt;br /&gt;
Short Nephew, id 109, is in Legal and reports to Grace Marks&lt;br /&gt;
&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class Chart {&lt;br /&gt;
    static class Employee {&lt;br /&gt;
        int id;&lt;br /&gt;
        String firstName;&lt;br /&gt;
        String lastName;&lt;br /&gt;
        String jobTitle;&lt;br /&gt;
        boolean mapped;&lt;br /&gt;
&lt;br /&gt;
        Employee(int id, String fn, String ln, String jt) {&lt;br /&gt;
            this.id = id;&lt;br /&gt;
            this.jobTitle = jt;&lt;br /&gt;
            this.firstName = fn;&lt;br /&gt;
            this.lastName = ln;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void map() {&lt;br /&gt;
            mapped = true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void unmap() {&lt;br /&gt;
            mapped = false;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private final HashMap&amp;lt;Employee, LinkedList&amp;lt;Employee&amp;gt;&amp;gt; assignment;&lt;br /&gt;
&lt;br /&gt;
    public Chart(boolean directed) {&lt;br /&gt;
        assignment = new HashMap&amp;lt;&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdgeHelper(Employee a, Employee b) {&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; e = assignment.get(a);&lt;br /&gt;
        if (e != null) {&lt;br /&gt;
            assignment.remove(b);&lt;br /&gt;
        } else&lt;br /&gt;
            e = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        e.add(b);&lt;br /&gt;
        assignment.put(a, e);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdge(Employee boss, Employee subordinate) {&lt;br /&gt;
        if (!assignment.containsKey(boss))&lt;br /&gt;
            assignment.put(boss, null);&lt;br /&gt;
        if (!assignment.containsKey(subordinate))&lt;br /&gt;
            assignment.put(subordinate, null);&lt;br /&gt;
        addEdgeHelper(boss, subordinate);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void depthFirstSearch(Employee employee) {&lt;br /&gt;
        employee.map();&lt;br /&gt;
        System.out.println(employee.firstName + &amp;quot; &amp;quot; + employee.lastName + &amp;quot; is a &amp;quot; + employee.jobTitle);&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; neighbors = assignment.get(employee);&lt;br /&gt;
        if (neighbors == null)&lt;br /&gt;
            return;&lt;br /&gt;
        for (Employee e : neighbors) {&lt;br /&gt;
            if (!e.mapped)&lt;br /&gt;
                depthFirstSearch(e);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void breadthFirstSearch(Employee employee) {&lt;br /&gt;
        /*Check if target item is null - if so quit*/&lt;br /&gt;
        if (employee == null)&lt;br /&gt;
            return;&lt;br /&gt;
        /*Declare a queue using LinkedList and add the target item*/&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        queue.add(employee);&lt;br /&gt;
        /*As long as the queue has data get the first in item .removeFirst*/&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Employee currentFirst = queue.removeFirst();&lt;br /&gt;
            /*If visited move on*/&lt;br /&gt;
            if (currentFirst.mapped) {&lt;br /&gt;
                continue;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*else visit it and print it*/&lt;br /&gt;
                currentFirst.map();&lt;br /&gt;
                System.out.println(currentFirst.id + &amp;quot;: &amp;quot; + currentFirst.firstName + &amp;quot; &amp;quot; + currentFirst.lastName + &amp;quot; - &amp;quot; + currentFirst.jobTitle);&lt;br /&gt;
            }&lt;br /&gt;
            /*Find neighbors of the current item*/&lt;br /&gt;
            LinkedList&amp;lt;Employee&amp;gt; allNeighbors = assignment.get(currentFirst);&lt;br /&gt;
            /*If there are none move on*/&lt;br /&gt;
            if (allNeighbors == null)&lt;br /&gt;
                continue;&lt;br /&gt;
            /*else if there are some and not visited, add them to the queue and the process starts over*/&lt;br /&gt;
            for (Employee e : allNeighbors) {&lt;br /&gt;
                if (!e.mapped)&lt;br /&gt;
                    queue.add(e);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void resetMapping() {&lt;br /&gt;
        for (Employee e : assignment.keySet()) {&lt;br /&gt;
            e.unmap();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Employee a = new Employee(38, &amp;quot;Jimbo&amp;quot;, &amp;quot;Jones&amp;quot;, &amp;quot;President&amp;quot;);&lt;br /&gt;
        Employee b = new Employee(39, &amp;quot;Mike&amp;quot;, &amp;quot;McCobb&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee c = new Employee(43, &amp;quot;Elda&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee d = new Employee(48, &amp;quot;Simon&amp;quot;, &amp;quot;Sneeth&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee e = new Employee(56, &amp;quot;Tim&amp;quot;, &amp;quot;Scott&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee f = new Employee(58, &amp;quot;Bob&amp;quot;, &amp;quot;Tilman&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee g = new Employee(78, &amp;quot;Andrew&amp;quot;, &amp;quot;Cole&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee h = new Employee(83, &amp;quot;Matt&amp;quot;, &amp;quot;Lemon&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee i = new Employee(88, &amp;quot;Chris&amp;quot;, &amp;quot;Lock&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee j = new Employee(71, &amp;quot;Agnes&amp;quot;, &amp;quot;White&amp;quot;, &amp;quot;Accountant&amp;quot;);&lt;br /&gt;
        Employee k = new Employee(61, &amp;quot;George&amp;quot;, &amp;quot;Mills&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee l = new Employee(59, &amp;quot;Thomas&amp;quot;, &amp;quot;Wells&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee m = new Employee(63, &amp;quot;Zip&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee n = new Employee(73, &amp;quot;Rasta&amp;quot;, &amp;quot;Him&amp;quot;, &amp;quot;Technician&amp;quot;);&lt;br /&gt;
        Employee o = new Employee(89, &amp;quot;Claire&amp;quot;, &amp;quot;Collins&amp;quot;, &amp;quot;Supervisor&amp;quot;);&lt;br /&gt;
        Employee p = new Employee(95, &amp;quot;Jim&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee q = new Employee(104, &amp;quot;Tom&amp;quot;, &amp;quot;Flat&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee r = new Employee(64, &amp;quot;Grace&amp;quot;, &amp;quot;Marks&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee s = new Employee(68, &amp;quot;Dan&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee t = new Employee(117, &amp;quot;Shad&amp;quot;, &amp;quot;Fifty&amp;quot;, &amp;quot;Security&amp;quot;);&lt;br /&gt;
        Employee u = new Employee(108, &amp;quot;Tall&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
        Employee v = new Employee(109, &amp;quot;Short&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        Chart chart = new Chart(true);&lt;br /&gt;
        chart.addEdge(a, b);&lt;br /&gt;
        chart.addEdge(a, c);&lt;br /&gt;
        chart.addEdge(a, d);&lt;br /&gt;
        chart.addEdge(b, e);&lt;br /&gt;
        chart.addEdge(b, f);&lt;br /&gt;
        chart.addEdge(e, g);&lt;br /&gt;
        chart.addEdge(e, h);&lt;br /&gt;
        chart.addEdge(e, i);&lt;br /&gt;
        chart.addEdge(f, j);&lt;br /&gt;
        chart.addEdge(c, k);&lt;br /&gt;
        chart.addEdge(c, l);&lt;br /&gt;
        chart.addEdge(c, m);&lt;br /&gt;
        chart.addEdge(l, n);&lt;br /&gt;
        chart.addEdge(k, o);&lt;br /&gt;
        chart.addEdge(o, p);&lt;br /&gt;
        chart.addEdge(o, q);&lt;br /&gt;
        chart.addEdge(d, r);&lt;br /&gt;
        chart.addEdge(d, s);&lt;br /&gt;
        chart.addEdge(s, t);&lt;br /&gt;
        chart.addEdge(r, u);&lt;br /&gt;
        chart.addEdge(r, v);&lt;br /&gt;
        //System.out.println(a.firstName + &amp;quot; &amp;quot; + a.lastName + &amp;quot; &amp;quot; + a.jobTitle + &amp;quot; &amp;quot; + a.id);&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        //chart.depthFirstSearch(k);&lt;br /&gt;
&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        chart.breadthFirstSearch(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Find missing number==&lt;br /&gt;
You are given an array of positive numbers from 1 to n, such that all numbers from 1 to n are present except one number x. You have to find x. The input array is not sorted. Look at the below array and give it a try before checking the solution.&lt;br /&gt;
&lt;br /&gt;
The missing number = a sum of the provided array subtracted from a sum of indices + 2&lt;br /&gt;
example 1, 2, 4 missing is 3 = (1 +2 +3+4) - (1 +2+4)&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
public class MissingNum {&lt;br /&gt;
    public static int findMissing(List&amp;lt;Integer&amp;gt; l) {&lt;br /&gt;
        int tot_prov = 0;&lt;br /&gt;
        for (Integer integer : l) {&lt;br /&gt;
            tot_prov += integer;&lt;br /&gt;
        }&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; k = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;
        int tot_req = 0;&lt;br /&gt;
        for (int i = 0; i &amp;lt; l.size() + 2; i++) {&lt;br /&gt;
            k.add(i);&lt;br /&gt;
            tot_req += k.get(i);&lt;br /&gt;
        }&lt;br /&gt;
        return tot_req - tot_prov;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; g = Arrays.asList(8, 5, 3, 2, 4, 1, 7);&lt;br /&gt;
        System.out.println(&amp;quot;The missing number is &amp;quot; + findMissing(g));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Mergesort==&lt;br /&gt;
public class MergeSort {&lt;br /&gt;
&lt;br /&gt;
    private static Comparable[] aux;&lt;br /&gt;
&lt;br /&gt;
    public static void sort(Comparable[] a) {&lt;br /&gt;
        aux = new Comparable[a.length];&lt;br /&gt;
        sort(a, 0, a.length - 1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void merge(Comparable[] a, int lo, int mid, int hi) {&lt;br /&gt;
        assert isSorted(a, lo, mid);&lt;br /&gt;
        assert isSorted(a, mid + 1, hi);&lt;br /&gt;
        //copy for [] a to [] aux&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            aux[k] = a[k];&lt;br /&gt;
        }&lt;br /&gt;
        // the merging process&lt;br /&gt;
        // i is the first index of the first half of the array&lt;br /&gt;
        // j is the first index of the second half of the array&lt;br /&gt;
        int i = lo, j = mid + 1;&lt;br /&gt;
&lt;br /&gt;
        // for every value of k - the indices of [] a&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            /*Left half exhausted take from the right*/&lt;br /&gt;
            if (i &amp;gt; mid)&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Right half exhausted take from the left*/&lt;br /&gt;
            else if (j &amp;gt; hi)&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
                /*Current key on the right less than current key on the left take from the right*/&lt;br /&gt;
            else if (less(aux[j], aux[i]))&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Current key on the right greater than current key on the left take from the left */&lt;br /&gt;
            else&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
        }&lt;br /&gt;
        assert isSorted(a, lo, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void sort(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        if (hi &amp;lt;= lo)&lt;br /&gt;
            return;&lt;br /&gt;
        int mid = lo + (hi - lo) / 2;&lt;br /&gt;
        sort(a, lo, mid);&lt;br /&gt;
        sort(a, mid + 1, hi);&lt;br /&gt;
        merge(a, lo, mid, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean less(Comparable v, Comparable w) {&lt;br /&gt;
        return v.compareTo(w) &amp;lt; 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean isSorted(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        for (int i = lo + 1; i &amp;lt;= hi; i++)&lt;br /&gt;
            if (less(a[i], a[i - 1])) return false;&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void show(Comparable[] a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length; i++) {&lt;br /&gt;
            //System.out.print(a[i]);&lt;br /&gt;
            System.out.println(a[i]);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        // Comparable[] a = {&amp;quot;E&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;A&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;T&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
        Comparable[] aa = {&amp;quot;A&amp;quot;, &amp;quot;X&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;};&lt;br /&gt;
        Comparable[] bb = {&amp;quot;H&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;J&amp;quot;, &amp;quot;Y&amp;quot;, &amp;quot;Z&amp;quot;};&lt;br /&gt;
        /*Merge the two comparable arrays*/&lt;br /&gt;
        Comparable[] a = new Comparable[aa.length + bb.length];&lt;br /&gt;
        System.arraycopy(aa, 0, a, 0, aa.length);&lt;br /&gt;
        System.arraycopy(bb, 0, a, aa.length, bb.length);&lt;br /&gt;
&lt;br /&gt;
        MergeSort.sort(a);&lt;br /&gt;
        show(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Binary Search==&lt;br /&gt;
public class BinarySearch {&lt;br /&gt;
    public static int find(int[] arr, int target) {&lt;br /&gt;
        int left = 0;&lt;br /&gt;
        int right = arr.length - 1;&lt;br /&gt;
        while (left &amp;lt;= right) {&lt;br /&gt;
            int mid = left + (right - left);&lt;br /&gt;
            if (arr[mid] == target)&lt;br /&gt;
                return mid;&lt;br /&gt;
            if (arr[mid] &amp;lt; target) {&lt;br /&gt;
                left = mid + 1;&lt;br /&gt;
            } else {&lt;br /&gt;
                right = mid - 1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return -1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        int[] f = {1, 10, 20, 47, 59, 63, 75, 88, 99, 107, 120, 133, 155, 162, 176, 188, 199, 200, 210, 222, 223};&lt;br /&gt;
        int t = 162;&lt;br /&gt;
        System.out.println(find(f, t));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Validate Binary Search Tree==&lt;br /&gt;
&lt;br /&gt;
Given a Binary Tree, figure out whether it’s a Binary Search Tree. In a binary search tree, each node’s key value is smaller than the key value of all nodes in the right subtree, and is greater than the key values of all nodes in the left subtree. Below is an example of a binary tree that is a valid BST.&lt;br /&gt;
&lt;br /&gt;
public class BinarySearchTree {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int value) {&lt;br /&gt;
            this.value = value;&lt;br /&gt;
            this.left = null;&lt;br /&gt;
            this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public BinarySearchTree() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    public boolean isbst(Node root, Node l, Node r) {&lt;br /&gt;
        if (root == null)&lt;br /&gt;
            return true;&lt;br /&gt;
        if (l != null &amp;amp;&amp;amp; l.value &amp;gt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        if (r != null &amp;amp;&amp;amp; r.value &amp;lt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        return isbst(root.left, l, root) &amp;amp;&amp;amp; isbst(root.right, root, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        BinarySearchTree bt = new BinarySearchTree();&lt;br /&gt;
        bt.root = new Node(10);&lt;br /&gt;
        bt.root.left = new Node(5);&lt;br /&gt;
        bt.root.right = new Node(15);&lt;br /&gt;
        bt.root.left.left = new Node(4);&lt;br /&gt;
        bt.root.left.right = new Node(7);&lt;br /&gt;
        bt.root.right.left = new Node(13);&lt;br /&gt;
        bt.root.right.right = new Node(26);&lt;br /&gt;
        if (bt.isbst(bt.root, null, null))&lt;br /&gt;
            System.out.println(&amp;quot;Is a BST&amp;quot;);&lt;br /&gt;
        else&lt;br /&gt;
            System.out.println(&amp;quot;Is not a BST&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Determine if two integers add up to given number==&lt;br /&gt;
Given an array of integers and a value, determine if there are any two integers in the array whose sum is equal to the given value. Return true if the sum exists and return false if it does not. Consider this array and the target sums:&lt;br /&gt;
public class SumOfTwo {&lt;br /&gt;
        public static void main(String args[]) {&lt;br /&gt;
            Set&amp;lt;Integer&amp;gt; set = new HashSet&amp;lt;&amp;gt;(); /*Populate this Set with target values*/&lt;br /&gt;
            /*Array of target values*/&lt;br /&gt;
            int[] g = {5, 6, 8, 39, 9, 11, 20, 59, 10, 1};&lt;br /&gt;
            /*Insert the arrays values in the set*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                set.add(g[i]);&lt;br /&gt;
            }&lt;br /&gt;
            /*Set a target number to check for*/&lt;br /&gt;
            int y = 20;&lt;br /&gt;
            /*If there are a set of numbers that would add up, increment this counter*/&lt;br /&gt;
            int counter = 0;&lt;br /&gt;
            /*Pick up a number in the set by turns and assign it to x*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                int x = g[i];&lt;br /&gt;
                /*Check to see if the set contains target minus found number.*/&lt;br /&gt;
                if (set.contains(y - x)) { //if this is true&lt;br /&gt;
                    /*If so, increment the counter by 1*/&lt;br /&gt;
                    counter += 1;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (counter &amp;gt; 0) { /*Some numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            } else { /*No numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are no sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Merge two sorted lists==&lt;br /&gt;
Given two sorted linked lists, merge them so that the resulting linked list is also sorted. Consider two sorted linked lists and the merged list below them as an example.&lt;br /&gt;
import java.util.Stack;&lt;br /&gt;
/*This code merges two ordered lists into one keeping their increasing order&lt;br /&gt;
 * the lists used for testing are in the main function*/&lt;br /&gt;
public class MergeLists {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int data;&lt;br /&gt;
        Node next;&lt;br /&gt;
        Node(int z) {&lt;br /&gt;
            this.data = z;&lt;br /&gt;
            next = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads the values of a list and loads them on a Stack, then reads from the stack*/&lt;br /&gt;
    public static void loadInStack(Node f) {&lt;br /&gt;
        Stack&amp;lt;Integer&amp;gt; pack = new Stack&amp;lt;&amp;gt;();&lt;br /&gt;
        if (f == null)&lt;br /&gt;
            return;&lt;br /&gt;
        pack.push(f.data);&lt;br /&gt;
        loadInStack(f.next);&lt;br /&gt;
        System.out.println(pack);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function duplicates the provided list into another one*/&lt;br /&gt;
    public static void duplicateList(Node m) {&lt;br /&gt;
        Node hold = new Node(-1);&lt;br /&gt;
        if (m == null)&lt;br /&gt;
            return;&lt;br /&gt;
        hold.data = m.data;&lt;br /&gt;
        duplicateList(m.next);&lt;br /&gt;
        System.out.println(hold.data);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads from two lists picking the lesser of*/&lt;br /&gt;
    /*It takes in two lists as variables a and b*/&lt;br /&gt;
    public static void pickTwo(Node a, Node b) {&lt;br /&gt;
        /*This is a dummy list initialized with -1*/&lt;br /&gt;
        Node dummyList = new Node(-1);&lt;br /&gt;
        while (a != null &amp;amp;&amp;amp; b != null) {&lt;br /&gt;
            if (a.data &amp;lt;= b.data) {&lt;br /&gt;
                /*populate the dummy list from a, if smaller*/&lt;br /&gt;
                dummyList.data = a.data;&lt;br /&gt;
                /*Increment a*/&lt;br /&gt;
                a = a.next;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*populate the dummy list from b, if smaller*/&lt;br /&gt;
                dummyList.data = b.data;&lt;br /&gt;
                /*Increment b*/&lt;br /&gt;
                b = b.next;&lt;br /&gt;
            }&lt;br /&gt;
            /*Print when done*/&lt;br /&gt;
            System.out.print(dummyList.data + &amp;quot; -&amp;gt; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Node f = new Node(2);&lt;br /&gt;
        Node g = new Node(7);&lt;br /&gt;
        Node h = new Node(8);&lt;br /&gt;
        Node i = new Node(11);&lt;br /&gt;
&lt;br /&gt;
        f.next = g;&lt;br /&gt;
        g.next = h;&lt;br /&gt;
        h.next = i;&lt;br /&gt;
&lt;br /&gt;
        //printNodes(f);&lt;br /&gt;
&lt;br /&gt;
        Node k = new Node(4);&lt;br /&gt;
        Node l = new Node(6);&lt;br /&gt;
        Node m = new Node(9);&lt;br /&gt;
        Node n = new Node(10);&lt;br /&gt;
        Node o = new Node(12);&lt;br /&gt;
&lt;br /&gt;
        k.next = l;&lt;br /&gt;
        l.next = m;&lt;br /&gt;
        m.next = n;&lt;br /&gt;
        n.next = o;&lt;br /&gt;
&lt;br /&gt;
        //loadInStack(f);&lt;br /&gt;
        //duplicateList(k);&lt;br /&gt;
        pickTwo(f, k);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Reverse String==&lt;br /&gt;
&lt;br /&gt;
Reverse the order of words in a given sentence (an array of characters).&lt;br /&gt;
&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class ReverseString {&lt;br /&gt;
    public static void lizy(String[] curr) {&lt;br /&gt;
        LinkedList&amp;lt;String&amp;gt; y = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        for (int g = 0; g &amp;lt;= curr.length - 1; g++) {&lt;br /&gt;
            y.add(curr[g]);&lt;br /&gt;
        }&lt;br /&gt;
        Iterator i = y.descendingIterator();&lt;br /&gt;
        while (i.hasNext()) {&lt;br /&gt;
            System.out.print(i.next() + &amp;quot; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        String given = &amp;quot;Hello World&amp;quot;;&lt;br /&gt;
        String[] given_array = given.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String lineOfCurrencies = &amp;quot;USD JPY AUD SGD HKD CAD CHF GBP EURO INR&amp;quot;;&lt;br /&gt;
        String multispace = &amp;quot;Kenya    Uganda Tanzania   Burundi     Rwanda&amp;quot;;&lt;br /&gt;
        String[] currencies = lineOfCurrencies.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String[] ms = multispace.split(&amp;quot;\\s+&amp;quot;);&lt;br /&gt;
        ReverseString.lizy(given_array);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Level Order Traversal of Binary Tree==&lt;br /&gt;
&lt;br /&gt;
Given the root of a binary tree, display the node values at each level. Node values for all levels should be displayed on separate lines. Let’s take a look at the below binary tree.&lt;br /&gt;
&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class Lot {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int v) {&lt;br /&gt;
            this.value = v;&lt;br /&gt;
            this.left = this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public Lot() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    void lot() {&lt;br /&gt;
        LinkedList&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        //Queue&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;Node&amp;gt;();&lt;br /&gt;
        queue.add(root);&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Node tempNode = queue.removeFirst();&lt;br /&gt;
            //Node tempNode = queue.poll();&lt;br /&gt;
            System.out.print(tempNode.value + &amp;quot; &amp;quot;);&lt;br /&gt;
            if (tempNode.left != null)&lt;br /&gt;
                queue.add(tempNode.left);&lt;br /&gt;
            if (tempNode.right != null)&lt;br /&gt;
                queue.add(tempNode.right);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Lot l = new Lot();&lt;br /&gt;
        l.root = new Node(100);&lt;br /&gt;
        l.root.left = new Node(50);&lt;br /&gt;
        l.root.right = new Node(200);&lt;br /&gt;
        l.root.left.left = new Node(25);&lt;br /&gt;
        l.root.left.right = new Node(75);&lt;br /&gt;
        l.root.right.right = new Node(350);&lt;br /&gt;
        System.out.println(&amp;quot;Level order traversal is as follows: &amp;quot;);&lt;br /&gt;
        l.lot();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==String Segmentation==&lt;br /&gt;
You are given a dictionary of words and a large input string. You have to find out whether the input string can be completely segmented into the words of a given dictionary. The following two examples elaborate on the problem further.&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
&lt;br /&gt;
public class Dictionary {&lt;br /&gt;
    boolean pair(Set&amp;lt;String&amp;gt; dictionary, String a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length(); i++) {&lt;br /&gt;
            String first_word = a.substring(0, i);&lt;br /&gt;
            if (dictionary.contains(first_word)) {&lt;br /&gt;
                String second_word = a.substring(i);&lt;br /&gt;
                if (dictionary.contains(second_word) || pair(dictionary, second_word)) {&lt;br /&gt;
                    return true;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        Dictionary dictionary = new Dictionary();&lt;br /&gt;
        Set&amp;lt;String&amp;gt; dict = new HashSet&amp;lt;&amp;gt;();&lt;br /&gt;
        dict.add(&amp;quot;geo&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;science&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;politics&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;thermal&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;physical&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;mis&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;under&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;stand&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;understand&amp;quot;);&lt;br /&gt;
        String word = &amp;quot;misunderstand&amp;quot;;&lt;br /&gt;
        if (dictionary.pair(dict, word)) {&lt;br /&gt;
            System.out.println(&amp;quot;The test word &amp;quot; + word + &amp;quot; fits in two words in the dictionary&amp;quot;);&lt;br /&gt;
        } else {&lt;br /&gt;
            System.out.println(&amp;quot;The test word &amp;quot; + word + &amp;quot; does not make dictionary words&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Computing number combinations==&lt;br /&gt;
Suppose we have coin denominations of [1, 2, 5] and the total amount is 7. We can make changes in the following 6 ways:&lt;br /&gt;
&lt;br /&gt;
public class Combinations {&lt;br /&gt;
    static int changeOptions(int[] denominations, int amount) {&lt;br /&gt;
        int[] solution = new int[amount + 1];&lt;br /&gt;
        solution[0] = 1;&lt;br /&gt;
        for (int x : denominations) {&lt;br /&gt;
            for (int i = x; i &amp;lt; (amount + 1); ++i) {&lt;br /&gt;
                solution[i] += solution[i - x];&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return solution[solution.length - 1];&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        int[] denominations = new int[]{1, 2, 5, 10};&lt;br /&gt;
        int amount = 5;&lt;br /&gt;
        int result = changeOptions(denominations, amount);&lt;br /&gt;
        System.out.println(&amp;quot;There are &amp;quot; + result + &amp;quot; combinations in forming &amp;quot; + amount + &amp;quot; given the factors below: &amp;quot;);&lt;br /&gt;
        for (int denomination : denominations) {&lt;br /&gt;
            System.out.println(denomination);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=Algorithms&amp;diff=147</id>
		<title>Algorithms</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=Algorithms&amp;diff=147"/>
		<updated>2022-10-25T16:14:10Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* Computing number combinations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Java Graph Implementation with Search Methods==&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class Chart {&lt;br /&gt;
    static class Employee {&lt;br /&gt;
        int id;&lt;br /&gt;
        String firstName;&lt;br /&gt;
        String lastName;&lt;br /&gt;
        String jobTitle;&lt;br /&gt;
        boolean mapped;&lt;br /&gt;
&lt;br /&gt;
        Employee(int id, String fn, String ln, String jt) {&lt;br /&gt;
            this.id = id;&lt;br /&gt;
            this.jobTitle = jt;&lt;br /&gt;
            this.firstName = fn;&lt;br /&gt;
            this.lastName = ln;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void map() {&lt;br /&gt;
            mapped = true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void unmap() {&lt;br /&gt;
            mapped = false;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private final HashMap&amp;lt;Employee, LinkedList&amp;lt;Employee&amp;gt;&amp;gt; assignment;&lt;br /&gt;
&lt;br /&gt;
    public Chart(boolean directed) {&lt;br /&gt;
        assignment = new HashMap&amp;lt;&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdgeHelper(Employee a, Employee b) {&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; e = assignment.get(a);&lt;br /&gt;
        if (e != null) {&lt;br /&gt;
            assignment.remove(b);&lt;br /&gt;
        } else&lt;br /&gt;
            e = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        e.add(b);&lt;br /&gt;
        assignment.put(a, e);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdge(Employee boss, Employee subordinate) {&lt;br /&gt;
        if (!assignment.containsKey(boss))&lt;br /&gt;
            assignment.put(boss, null);&lt;br /&gt;
        if (!assignment.containsKey(subordinate))&lt;br /&gt;
            assignment.put(subordinate, null);&lt;br /&gt;
        addEdgeHelper(boss, subordinate);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void depthFirstSearch(Employee employee) {&lt;br /&gt;
        employee.map();&lt;br /&gt;
        System.out.println(employee.firstName + &amp;quot; &amp;quot; + employee.lastName + &amp;quot; is a &amp;quot; + employee.jobTitle);&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; neighbors = assignment.get(employee);&lt;br /&gt;
        if (neighbors == null)&lt;br /&gt;
            return;&lt;br /&gt;
        for (Employee e : neighbors) {&lt;br /&gt;
            if (!e.mapped)&lt;br /&gt;
                depthFirstSearch(e);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void breadthFirstSearch(Employee employee) {&lt;br /&gt;
        /*Check if target item is null - if so quit*/&lt;br /&gt;
        if (employee == null)&lt;br /&gt;
            return;&lt;br /&gt;
        /*Declare a queue using LinkedList and add the target item*/&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        queue.add(employee);&lt;br /&gt;
        /*As long as the queue has data get the first in item .removeFirst*/&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Employee currentFirst = queue.removeFirst();&lt;br /&gt;
            /*If visited move on*/&lt;br /&gt;
            if (currentFirst.mapped) {&lt;br /&gt;
                continue;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*else visit it and print it*/&lt;br /&gt;
                currentFirst.map();&lt;br /&gt;
                System.out.println(currentFirst.id + &amp;quot;: &amp;quot; + currentFirst.firstName + &amp;quot; &amp;quot; + currentFirst.lastName + &amp;quot; - &amp;quot; + currentFirst.jobTitle);&lt;br /&gt;
            }&lt;br /&gt;
            /*Find neighbors of the current item*/&lt;br /&gt;
            LinkedList&amp;lt;Employee&amp;gt; allNeighbors = assignment.get(currentFirst);&lt;br /&gt;
            /*If there are none move on*/&lt;br /&gt;
            if (allNeighbors == null)&lt;br /&gt;
                continue;&lt;br /&gt;
            /*else if there are some and not visited, add them to the queue and the process starts over*/&lt;br /&gt;
            for (Employee e : allNeighbors) {&lt;br /&gt;
                if (!e.mapped)&lt;br /&gt;
                    queue.add(e);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void resetMapping() {&lt;br /&gt;
        for (Employee e : assignment.keySet()) {&lt;br /&gt;
            e.unmap();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Employee a = new Employee(38, &amp;quot;Jimbo&amp;quot;, &amp;quot;Jones&amp;quot;, &amp;quot;President&amp;quot;);&lt;br /&gt;
        Employee b = new Employee(39, &amp;quot;Mike&amp;quot;, &amp;quot;McCobb&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee c = new Employee(43, &amp;quot;Elda&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee d = new Employee(48, &amp;quot;Simon&amp;quot;, &amp;quot;Sneeth&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee e = new Employee(56, &amp;quot;Tim&amp;quot;, &amp;quot;Scott&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee f = new Employee(58, &amp;quot;Bob&amp;quot;, &amp;quot;Tilman&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee g = new Employee(78, &amp;quot;Andrew&amp;quot;, &amp;quot;Cole&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee h = new Employee(83, &amp;quot;Matt&amp;quot;, &amp;quot;Lemon&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee i = new Employee(88, &amp;quot;Chris&amp;quot;, &amp;quot;Lock&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee j = new Employee(71, &amp;quot;Agnes&amp;quot;, &amp;quot;White&amp;quot;, &amp;quot;Accountant&amp;quot;);&lt;br /&gt;
        Employee k = new Employee(61, &amp;quot;George&amp;quot;, &amp;quot;Mills&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee l = new Employee(59, &amp;quot;Thomas&amp;quot;, &amp;quot;Wells&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee m = new Employee(63, &amp;quot;Zip&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee n = new Employee(73, &amp;quot;Rasta&amp;quot;, &amp;quot;Him&amp;quot;, &amp;quot;Technician&amp;quot;);&lt;br /&gt;
        Employee o = new Employee(89, &amp;quot;Claire&amp;quot;, &amp;quot;Collins&amp;quot;, &amp;quot;Supervisor&amp;quot;);&lt;br /&gt;
        Employee p = new Employee(95, &amp;quot;Jim&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee q = new Employee(104, &amp;quot;Tom&amp;quot;, &amp;quot;Flat&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee r = new Employee(64, &amp;quot;Grace&amp;quot;, &amp;quot;Marks&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee s = new Employee(68, &amp;quot;Dan&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee t = new Employee(117, &amp;quot;Shad&amp;quot;, &amp;quot;Fifty&amp;quot;, &amp;quot;Security&amp;quot;);&lt;br /&gt;
        Employee u = new Employee(108, &amp;quot;Tall&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
        Employee v = new Employee(109, &amp;quot;Short&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        Chart chart = new Chart(true);&lt;br /&gt;
        chart.addEdge(a, b);&lt;br /&gt;
        chart.addEdge(a, c);&lt;br /&gt;
        chart.addEdge(a, d);&lt;br /&gt;
        chart.addEdge(b, e);&lt;br /&gt;
        chart.addEdge(b, f);&lt;br /&gt;
        chart.addEdge(e, g);&lt;br /&gt;
        chart.addEdge(e, h);&lt;br /&gt;
        chart.addEdge(e, i);&lt;br /&gt;
        chart.addEdge(f, j);&lt;br /&gt;
        chart.addEdge(c, k);&lt;br /&gt;
        chart.addEdge(c, l);&lt;br /&gt;
        chart.addEdge(c, m);&lt;br /&gt;
        chart.addEdge(l, n);&lt;br /&gt;
        chart.addEdge(k, o);&lt;br /&gt;
        chart.addEdge(o, p);&lt;br /&gt;
        chart.addEdge(o, q);&lt;br /&gt;
        chart.addEdge(d, r);&lt;br /&gt;
        chart.addEdge(d, s);&lt;br /&gt;
        chart.addEdge(s, t);&lt;br /&gt;
        chart.addEdge(r, u);&lt;br /&gt;
        chart.addEdge(r, v);&lt;br /&gt;
        //System.out.println(a.firstName + &amp;quot; &amp;quot; + a.lastName + &amp;quot; &amp;quot; + a.jobTitle + &amp;quot; &amp;quot; + a.id);&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        //chart.depthFirstSearch(k);&lt;br /&gt;
&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        chart.breadthFirstSearch(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Find missing number==&lt;br /&gt;
You are given an array of positive numbers from 1 to n, such that all numbers from 1 to n are present except one number x. You have to find x. The input array is not sorted. Look at the below array and give it a try before checking the solution.&lt;br /&gt;
&lt;br /&gt;
The missing number = a sum of the provided array subtracted from a sum of indices + 2&lt;br /&gt;
example 1, 2, 4 missing is 3 = (1 +2 +3+4) - (1 +2+4)&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
public class MissingNum {&lt;br /&gt;
    public static int findMissing(List&amp;lt;Integer&amp;gt; l) {&lt;br /&gt;
        int tot_prov = 0;&lt;br /&gt;
        for (Integer integer : l) {&lt;br /&gt;
            tot_prov += integer;&lt;br /&gt;
        }&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; k = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;
        int tot_req = 0;&lt;br /&gt;
        for (int i = 0; i &amp;lt; l.size() + 2; i++) {&lt;br /&gt;
            k.add(i);&lt;br /&gt;
            tot_req += k.get(i);&lt;br /&gt;
        }&lt;br /&gt;
        return tot_req - tot_prov;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; g = Arrays.asList(8, 5, 3, 2, 4, 1, 7);&lt;br /&gt;
        System.out.println(&amp;quot;The missing number is &amp;quot; + findMissing(g));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Mergesort==&lt;br /&gt;
public class MergeSort {&lt;br /&gt;
&lt;br /&gt;
    private static Comparable[] aux;&lt;br /&gt;
&lt;br /&gt;
    public static void sort(Comparable[] a) {&lt;br /&gt;
        aux = new Comparable[a.length];&lt;br /&gt;
        sort(a, 0, a.length - 1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void merge(Comparable[] a, int lo, int mid, int hi) {&lt;br /&gt;
        assert isSorted(a, lo, mid);&lt;br /&gt;
        assert isSorted(a, mid + 1, hi);&lt;br /&gt;
        //copy for [] a to [] aux&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            aux[k] = a[k];&lt;br /&gt;
        }&lt;br /&gt;
        // the merging process&lt;br /&gt;
        // i is the first index of the first half of the array&lt;br /&gt;
        // j is the first index of the second half of the array&lt;br /&gt;
        int i = lo, j = mid + 1;&lt;br /&gt;
&lt;br /&gt;
        // for every value of k - the indices of [] a&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            /*Left half exhausted take from the right*/&lt;br /&gt;
            if (i &amp;gt; mid)&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Right half exhausted take from the left*/&lt;br /&gt;
            else if (j &amp;gt; hi)&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
                /*Current key on the right less than current key on the left take from the right*/&lt;br /&gt;
            else if (less(aux[j], aux[i]))&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Current key on the right greater than current key on the left take from the left */&lt;br /&gt;
            else&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
        }&lt;br /&gt;
        assert isSorted(a, lo, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void sort(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        if (hi &amp;lt;= lo)&lt;br /&gt;
            return;&lt;br /&gt;
        int mid = lo + (hi - lo) / 2;&lt;br /&gt;
        sort(a, lo, mid);&lt;br /&gt;
        sort(a, mid + 1, hi);&lt;br /&gt;
        merge(a, lo, mid, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean less(Comparable v, Comparable w) {&lt;br /&gt;
        return v.compareTo(w) &amp;lt; 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean isSorted(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        for (int i = lo + 1; i &amp;lt;= hi; i++)&lt;br /&gt;
            if (less(a[i], a[i - 1])) return false;&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void show(Comparable[] a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length; i++) {&lt;br /&gt;
            //System.out.print(a[i]);&lt;br /&gt;
            System.out.println(a[i]);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        // Comparable[] a = {&amp;quot;E&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;A&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;T&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
        Comparable[] aa = {&amp;quot;A&amp;quot;, &amp;quot;X&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;};&lt;br /&gt;
        Comparable[] bb = {&amp;quot;H&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;J&amp;quot;, &amp;quot;Y&amp;quot;, &amp;quot;Z&amp;quot;};&lt;br /&gt;
        /*Merge the two comparable arrays*/&lt;br /&gt;
        Comparable[] a = new Comparable[aa.length + bb.length];&lt;br /&gt;
        System.arraycopy(aa, 0, a, 0, aa.length);&lt;br /&gt;
        System.arraycopy(bb, 0, a, aa.length, bb.length);&lt;br /&gt;
&lt;br /&gt;
        MergeSort.sort(a);&lt;br /&gt;
        show(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Binary Search==&lt;br /&gt;
public class BinarySearch {&lt;br /&gt;
    public static int find(int[] arr, int target) {&lt;br /&gt;
        int left = 0;&lt;br /&gt;
        int right = arr.length - 1;&lt;br /&gt;
        while (left &amp;lt;= right) {&lt;br /&gt;
            int mid = left + (right - left);&lt;br /&gt;
            if (arr[mid] == target)&lt;br /&gt;
                return mid;&lt;br /&gt;
            if (arr[mid] &amp;lt; target) {&lt;br /&gt;
                left = mid + 1;&lt;br /&gt;
            } else {&lt;br /&gt;
                right = mid - 1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return -1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        int[] f = {1, 10, 20, 47, 59, 63, 75, 88, 99, 107, 120, 133, 155, 162, 176, 188, 199, 200, 210, 222, 223};&lt;br /&gt;
        int t = 162;&lt;br /&gt;
        System.out.println(find(f, t));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Validate Binary Search Tree==&lt;br /&gt;
&lt;br /&gt;
Given a Binary Tree, figure out whether it’s a Binary Search Tree. In a binary search tree, each node’s key value is smaller than the key value of all nodes in the right subtree, and is greater than the key values of all nodes in the left subtree. Below is an example of a binary tree that is a valid BST.&lt;br /&gt;
&lt;br /&gt;
public class BinarySearchTree {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int value) {&lt;br /&gt;
            this.value = value;&lt;br /&gt;
            this.left = null;&lt;br /&gt;
            this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public BinarySearchTree() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    public boolean isbst(Node root, Node l, Node r) {&lt;br /&gt;
        if (root == null)&lt;br /&gt;
            return true;&lt;br /&gt;
        if (l != null &amp;amp;&amp;amp; l.value &amp;gt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        if (r != null &amp;amp;&amp;amp; r.value &amp;lt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        return isbst(root.left, l, root) &amp;amp;&amp;amp; isbst(root.right, root, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        BinarySearchTree bt = new BinarySearchTree();&lt;br /&gt;
        bt.root = new Node(10);&lt;br /&gt;
        bt.root.left = new Node(5);&lt;br /&gt;
        bt.root.right = new Node(15);&lt;br /&gt;
        bt.root.left.left = new Node(4);&lt;br /&gt;
        bt.root.left.right = new Node(7);&lt;br /&gt;
        bt.root.right.left = new Node(13);&lt;br /&gt;
        bt.root.right.right = new Node(26);&lt;br /&gt;
        if (bt.isbst(bt.root, null, null))&lt;br /&gt;
            System.out.println(&amp;quot;Is a BST&amp;quot;);&lt;br /&gt;
        else&lt;br /&gt;
            System.out.println(&amp;quot;Is not a BST&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Determine if two integers add up to given number==&lt;br /&gt;
Given an array of integers and a value, determine if there are any two integers in the array whose sum is equal to the given value. Return true if the sum exists and return false if it does not. Consider this array and the target sums:&lt;br /&gt;
public class SumOfTwo {&lt;br /&gt;
        public static void main(String args[]) {&lt;br /&gt;
            Set&amp;lt;Integer&amp;gt; set = new HashSet&amp;lt;&amp;gt;(); /*Populate this Set with target values*/&lt;br /&gt;
            /*Array of target values*/&lt;br /&gt;
            int[] g = {5, 6, 8, 39, 9, 11, 20, 59, 10, 1};&lt;br /&gt;
            /*Insert the arrays values in the set*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                set.add(g[i]);&lt;br /&gt;
            }&lt;br /&gt;
            /*Set a target number to check for*/&lt;br /&gt;
            int y = 20;&lt;br /&gt;
            /*If there are a set of numbers that would add up, increment this counter*/&lt;br /&gt;
            int counter = 0;&lt;br /&gt;
            /*Pick up a number in the set by turns and assign it to x*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                int x = g[i];&lt;br /&gt;
                /*Check to see if the set contains target minus found number.*/&lt;br /&gt;
                if (set.contains(y - x)) { //if this is true&lt;br /&gt;
                    /*If so, increment the counter by 1*/&lt;br /&gt;
                    counter += 1;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (counter &amp;gt; 0) { /*Some numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            } else { /*No numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are no sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Merge two sorted lists==&lt;br /&gt;
Given two sorted linked lists, merge them so that the resulting linked list is also sorted. Consider two sorted linked lists and the merged list below them as an example.&lt;br /&gt;
import java.util.Stack;&lt;br /&gt;
/*This code merges two ordered lists into one keeping their increasing order&lt;br /&gt;
 * the lists used for testing are in the main function*/&lt;br /&gt;
public class MergeLists {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int data;&lt;br /&gt;
        Node next;&lt;br /&gt;
        Node(int z) {&lt;br /&gt;
            this.data = z;&lt;br /&gt;
            next = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads the values of a list and loads them on a Stack, then reads from the stack*/&lt;br /&gt;
    public static void loadInStack(Node f) {&lt;br /&gt;
        Stack&amp;lt;Integer&amp;gt; pack = new Stack&amp;lt;&amp;gt;();&lt;br /&gt;
        if (f == null)&lt;br /&gt;
            return;&lt;br /&gt;
        pack.push(f.data);&lt;br /&gt;
        loadInStack(f.next);&lt;br /&gt;
        System.out.println(pack);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function duplicates the provided list into another one*/&lt;br /&gt;
    public static void duplicateList(Node m) {&lt;br /&gt;
        Node hold = new Node(-1);&lt;br /&gt;
        if (m == null)&lt;br /&gt;
            return;&lt;br /&gt;
        hold.data = m.data;&lt;br /&gt;
        duplicateList(m.next);&lt;br /&gt;
        System.out.println(hold.data);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads from two lists picking the lesser of*/&lt;br /&gt;
    /*It takes in two lists as variables a and b*/&lt;br /&gt;
    public static void pickTwo(Node a, Node b) {&lt;br /&gt;
        /*This is a dummy list initialized with -1*/&lt;br /&gt;
        Node dummyList = new Node(-1);&lt;br /&gt;
        while (a != null &amp;amp;&amp;amp; b != null) {&lt;br /&gt;
            if (a.data &amp;lt;= b.data) {&lt;br /&gt;
                /*populate the dummy list from a, if smaller*/&lt;br /&gt;
                dummyList.data = a.data;&lt;br /&gt;
                /*Increment a*/&lt;br /&gt;
                a = a.next;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*populate the dummy list from b, if smaller*/&lt;br /&gt;
                dummyList.data = b.data;&lt;br /&gt;
                /*Increment b*/&lt;br /&gt;
                b = b.next;&lt;br /&gt;
            }&lt;br /&gt;
            /*Print when done*/&lt;br /&gt;
            System.out.print(dummyList.data + &amp;quot; -&amp;gt; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Node f = new Node(2);&lt;br /&gt;
        Node g = new Node(7);&lt;br /&gt;
        Node h = new Node(8);&lt;br /&gt;
        Node i = new Node(11);&lt;br /&gt;
&lt;br /&gt;
        f.next = g;&lt;br /&gt;
        g.next = h;&lt;br /&gt;
        h.next = i;&lt;br /&gt;
&lt;br /&gt;
        //printNodes(f);&lt;br /&gt;
&lt;br /&gt;
        Node k = new Node(4);&lt;br /&gt;
        Node l = new Node(6);&lt;br /&gt;
        Node m = new Node(9);&lt;br /&gt;
        Node n = new Node(10);&lt;br /&gt;
        Node o = new Node(12);&lt;br /&gt;
&lt;br /&gt;
        k.next = l;&lt;br /&gt;
        l.next = m;&lt;br /&gt;
        m.next = n;&lt;br /&gt;
        n.next = o;&lt;br /&gt;
&lt;br /&gt;
        //loadInStack(f);&lt;br /&gt;
        //duplicateList(k);&lt;br /&gt;
        pickTwo(f, k);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Reverse String==&lt;br /&gt;
&lt;br /&gt;
Reverse the order of words in a given sentence (an array of characters).&lt;br /&gt;
&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class ReverseString {&lt;br /&gt;
    public static void lizy(String[] curr) {&lt;br /&gt;
        LinkedList&amp;lt;String&amp;gt; y = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        for (int g = 0; g &amp;lt;= curr.length - 1; g++) {&lt;br /&gt;
            y.add(curr[g]);&lt;br /&gt;
        }&lt;br /&gt;
        Iterator i = y.descendingIterator();&lt;br /&gt;
        while (i.hasNext()) {&lt;br /&gt;
            System.out.print(i.next() + &amp;quot; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        String given = &amp;quot;Hello World&amp;quot;;&lt;br /&gt;
        String[] given_array = given.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String lineOfCurrencies = &amp;quot;USD JPY AUD SGD HKD CAD CHF GBP EURO INR&amp;quot;;&lt;br /&gt;
        String multispace = &amp;quot;Kenya    Uganda Tanzania   Burundi     Rwanda&amp;quot;;&lt;br /&gt;
        String[] currencies = lineOfCurrencies.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String[] ms = multispace.split(&amp;quot;\\s+&amp;quot;);&lt;br /&gt;
        ReverseString.lizy(given_array);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Level Order Traversal of Binary Tree==&lt;br /&gt;
&lt;br /&gt;
Given the root of a binary tree, display the node values at each level. Node values for all levels should be displayed on separate lines. Let’s take a look at the below binary tree.&lt;br /&gt;
&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class Lot {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int v) {&lt;br /&gt;
            this.value = v;&lt;br /&gt;
            this.left = this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public Lot() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    void lot() {&lt;br /&gt;
        LinkedList&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        //Queue&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;Node&amp;gt;();&lt;br /&gt;
        queue.add(root);&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Node tempNode = queue.removeFirst();&lt;br /&gt;
            //Node tempNode = queue.poll();&lt;br /&gt;
            System.out.print(tempNode.value + &amp;quot; &amp;quot;);&lt;br /&gt;
            if (tempNode.left != null)&lt;br /&gt;
                queue.add(tempNode.left);&lt;br /&gt;
            if (tempNode.right != null)&lt;br /&gt;
                queue.add(tempNode.right);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Lot l = new Lot();&lt;br /&gt;
        l.root = new Node(100);&lt;br /&gt;
        l.root.left = new Node(50);&lt;br /&gt;
        l.root.right = new Node(200);&lt;br /&gt;
        l.root.left.left = new Node(25);&lt;br /&gt;
        l.root.left.right = new Node(75);&lt;br /&gt;
        l.root.right.right = new Node(350);&lt;br /&gt;
        System.out.println(&amp;quot;Level order traversal is as follows: &amp;quot;);&lt;br /&gt;
        l.lot();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==String Segmentation==&lt;br /&gt;
You are given a dictionary of words and a large input string. You have to find out whether the input string can be completely segmented into the words of a given dictionary. The following two examples elaborate on the problem further.&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
&lt;br /&gt;
public class Dictionary {&lt;br /&gt;
    boolean pair(Set&amp;lt;String&amp;gt; dictionary, String a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length(); i++) {&lt;br /&gt;
            String first_word = a.substring(0, i);&lt;br /&gt;
            if (dictionary.contains(first_word)) {&lt;br /&gt;
                String second_word = a.substring(i);&lt;br /&gt;
                if (dictionary.contains(second_word) || pair(dictionary, second_word)) {&lt;br /&gt;
                    return true;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        Dictionary dictionary = new Dictionary();&lt;br /&gt;
        Set&amp;lt;String&amp;gt; dict = new HashSet&amp;lt;&amp;gt;();&lt;br /&gt;
        dict.add(&amp;quot;geo&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;science&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;politics&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;thermal&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;physical&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;mis&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;under&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;stand&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;understand&amp;quot;);&lt;br /&gt;
        String word = &amp;quot;misunderstand&amp;quot;;&lt;br /&gt;
        if (dictionary.pair(dict, word)) {&lt;br /&gt;
            System.out.println(&amp;quot;The test word &amp;quot; + word + &amp;quot; fits in two words in the dictionary&amp;quot;);&lt;br /&gt;
        } else {&lt;br /&gt;
            System.out.println(&amp;quot;The test word &amp;quot; + word + &amp;quot; does not make dictionary words&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Computing number combinations==&lt;br /&gt;
Suppose we have coin denominations of [1, 2, 5] and the total amount is 7. We can make changes in the following 6 ways:&lt;br /&gt;
&lt;br /&gt;
public class Combinations {&lt;br /&gt;
    static int changeOptions(int[] denominations, int amount) {&lt;br /&gt;
        int[] solution = new int[amount + 1];&lt;br /&gt;
        solution[0] = 1;&lt;br /&gt;
        for (int x : denominations) {&lt;br /&gt;
            for (int i = x; i &amp;lt; (amount + 1); ++i) {&lt;br /&gt;
                solution[i] += solution[i - x];&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return solution[solution.length - 1];&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        int[] denominations = new int[]{1, 2, 5, 10};&lt;br /&gt;
        int amount = 5;&lt;br /&gt;
        int result = changeOptions(denominations, amount);&lt;br /&gt;
        System.out.println(&amp;quot;There are &amp;quot; + result + &amp;quot; combinations in forming &amp;quot; + amount + &amp;quot; given the factors below: &amp;quot;);&lt;br /&gt;
        for (int denomination : denominations) {&lt;br /&gt;
            System.out.println(denomination);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=Algorithms&amp;diff=146</id>
		<title>Algorithms</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=Algorithms&amp;diff=146"/>
		<updated>2022-10-25T16:13:45Z</updated>

		<summary type="html">&lt;p&gt;Leksy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Java Graph Implementation with Search Methods==&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class Chart {&lt;br /&gt;
    static class Employee {&lt;br /&gt;
        int id;&lt;br /&gt;
        String firstName;&lt;br /&gt;
        String lastName;&lt;br /&gt;
        String jobTitle;&lt;br /&gt;
        boolean mapped;&lt;br /&gt;
&lt;br /&gt;
        Employee(int id, String fn, String ln, String jt) {&lt;br /&gt;
            this.id = id;&lt;br /&gt;
            this.jobTitle = jt;&lt;br /&gt;
            this.firstName = fn;&lt;br /&gt;
            this.lastName = ln;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void map() {&lt;br /&gt;
            mapped = true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void unmap() {&lt;br /&gt;
            mapped = false;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private final HashMap&amp;lt;Employee, LinkedList&amp;lt;Employee&amp;gt;&amp;gt; assignment;&lt;br /&gt;
&lt;br /&gt;
    public Chart(boolean directed) {&lt;br /&gt;
        assignment = new HashMap&amp;lt;&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdgeHelper(Employee a, Employee b) {&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; e = assignment.get(a);&lt;br /&gt;
        if (e != null) {&lt;br /&gt;
            assignment.remove(b);&lt;br /&gt;
        } else&lt;br /&gt;
            e = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        e.add(b);&lt;br /&gt;
        assignment.put(a, e);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdge(Employee boss, Employee subordinate) {&lt;br /&gt;
        if (!assignment.containsKey(boss))&lt;br /&gt;
            assignment.put(boss, null);&lt;br /&gt;
        if (!assignment.containsKey(subordinate))&lt;br /&gt;
            assignment.put(subordinate, null);&lt;br /&gt;
        addEdgeHelper(boss, subordinate);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void depthFirstSearch(Employee employee) {&lt;br /&gt;
        employee.map();&lt;br /&gt;
        System.out.println(employee.firstName + &amp;quot; &amp;quot; + employee.lastName + &amp;quot; is a &amp;quot; + employee.jobTitle);&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; neighbors = assignment.get(employee);&lt;br /&gt;
        if (neighbors == null)&lt;br /&gt;
            return;&lt;br /&gt;
        for (Employee e : neighbors) {&lt;br /&gt;
            if (!e.mapped)&lt;br /&gt;
                depthFirstSearch(e);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void breadthFirstSearch(Employee employee) {&lt;br /&gt;
        /*Check if target item is null - if so quit*/&lt;br /&gt;
        if (employee == null)&lt;br /&gt;
            return;&lt;br /&gt;
        /*Declare a queue using LinkedList and add the target item*/&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        queue.add(employee);&lt;br /&gt;
        /*As long as the queue has data get the first in item .removeFirst*/&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Employee currentFirst = queue.removeFirst();&lt;br /&gt;
            /*If visited move on*/&lt;br /&gt;
            if (currentFirst.mapped) {&lt;br /&gt;
                continue;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*else visit it and print it*/&lt;br /&gt;
                currentFirst.map();&lt;br /&gt;
                System.out.println(currentFirst.id + &amp;quot;: &amp;quot; + currentFirst.firstName + &amp;quot; &amp;quot; + currentFirst.lastName + &amp;quot; - &amp;quot; + currentFirst.jobTitle);&lt;br /&gt;
            }&lt;br /&gt;
            /*Find neighbors of the current item*/&lt;br /&gt;
            LinkedList&amp;lt;Employee&amp;gt; allNeighbors = assignment.get(currentFirst);&lt;br /&gt;
            /*If there are none move on*/&lt;br /&gt;
            if (allNeighbors == null)&lt;br /&gt;
                continue;&lt;br /&gt;
            /*else if there are some and not visited, add them to the queue and the process starts over*/&lt;br /&gt;
            for (Employee e : allNeighbors) {&lt;br /&gt;
                if (!e.mapped)&lt;br /&gt;
                    queue.add(e);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void resetMapping() {&lt;br /&gt;
        for (Employee e : assignment.keySet()) {&lt;br /&gt;
            e.unmap();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Employee a = new Employee(38, &amp;quot;Jimbo&amp;quot;, &amp;quot;Jones&amp;quot;, &amp;quot;President&amp;quot;);&lt;br /&gt;
        Employee b = new Employee(39, &amp;quot;Mike&amp;quot;, &amp;quot;McCobb&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee c = new Employee(43, &amp;quot;Elda&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee d = new Employee(48, &amp;quot;Simon&amp;quot;, &amp;quot;Sneeth&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee e = new Employee(56, &amp;quot;Tim&amp;quot;, &amp;quot;Scott&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee f = new Employee(58, &amp;quot;Bob&amp;quot;, &amp;quot;Tilman&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee g = new Employee(78, &amp;quot;Andrew&amp;quot;, &amp;quot;Cole&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee h = new Employee(83, &amp;quot;Matt&amp;quot;, &amp;quot;Lemon&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee i = new Employee(88, &amp;quot;Chris&amp;quot;, &amp;quot;Lock&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee j = new Employee(71, &amp;quot;Agnes&amp;quot;, &amp;quot;White&amp;quot;, &amp;quot;Accountant&amp;quot;);&lt;br /&gt;
        Employee k = new Employee(61, &amp;quot;George&amp;quot;, &amp;quot;Mills&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee l = new Employee(59, &amp;quot;Thomas&amp;quot;, &amp;quot;Wells&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee m = new Employee(63, &amp;quot;Zip&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee n = new Employee(73, &amp;quot;Rasta&amp;quot;, &amp;quot;Him&amp;quot;, &amp;quot;Technician&amp;quot;);&lt;br /&gt;
        Employee o = new Employee(89, &amp;quot;Claire&amp;quot;, &amp;quot;Collins&amp;quot;, &amp;quot;Supervisor&amp;quot;);&lt;br /&gt;
        Employee p = new Employee(95, &amp;quot;Jim&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee q = new Employee(104, &amp;quot;Tom&amp;quot;, &amp;quot;Flat&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee r = new Employee(64, &amp;quot;Grace&amp;quot;, &amp;quot;Marks&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee s = new Employee(68, &amp;quot;Dan&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee t = new Employee(117, &amp;quot;Shad&amp;quot;, &amp;quot;Fifty&amp;quot;, &amp;quot;Security&amp;quot;);&lt;br /&gt;
        Employee u = new Employee(108, &amp;quot;Tall&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
        Employee v = new Employee(109, &amp;quot;Short&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        Chart chart = new Chart(true);&lt;br /&gt;
        chart.addEdge(a, b);&lt;br /&gt;
        chart.addEdge(a, c);&lt;br /&gt;
        chart.addEdge(a, d);&lt;br /&gt;
        chart.addEdge(b, e);&lt;br /&gt;
        chart.addEdge(b, f);&lt;br /&gt;
        chart.addEdge(e, g);&lt;br /&gt;
        chart.addEdge(e, h);&lt;br /&gt;
        chart.addEdge(e, i);&lt;br /&gt;
        chart.addEdge(f, j);&lt;br /&gt;
        chart.addEdge(c, k);&lt;br /&gt;
        chart.addEdge(c, l);&lt;br /&gt;
        chart.addEdge(c, m);&lt;br /&gt;
        chart.addEdge(l, n);&lt;br /&gt;
        chart.addEdge(k, o);&lt;br /&gt;
        chart.addEdge(o, p);&lt;br /&gt;
        chart.addEdge(o, q);&lt;br /&gt;
        chart.addEdge(d, r);&lt;br /&gt;
        chart.addEdge(d, s);&lt;br /&gt;
        chart.addEdge(s, t);&lt;br /&gt;
        chart.addEdge(r, u);&lt;br /&gt;
        chart.addEdge(r, v);&lt;br /&gt;
        //System.out.println(a.firstName + &amp;quot; &amp;quot; + a.lastName + &amp;quot; &amp;quot; + a.jobTitle + &amp;quot; &amp;quot; + a.id);&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        //chart.depthFirstSearch(k);&lt;br /&gt;
&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        chart.breadthFirstSearch(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Find missing number==&lt;br /&gt;
You are given an array of positive numbers from 1 to n, such that all numbers from 1 to n are present except one number x. You have to find x. The input array is not sorted. Look at the below array and give it a try before checking the solution.&lt;br /&gt;
&lt;br /&gt;
The missing number = a sum of the provided array subtracted from a sum of indices + 2&lt;br /&gt;
example 1, 2, 4 missing is 3 = (1 +2 +3+4) - (1 +2+4)&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
public class MissingNum {&lt;br /&gt;
    public static int findMissing(List&amp;lt;Integer&amp;gt; l) {&lt;br /&gt;
        int tot_prov = 0;&lt;br /&gt;
        for (Integer integer : l) {&lt;br /&gt;
            tot_prov += integer;&lt;br /&gt;
        }&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; k = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;
        int tot_req = 0;&lt;br /&gt;
        for (int i = 0; i &amp;lt; l.size() + 2; i++) {&lt;br /&gt;
            k.add(i);&lt;br /&gt;
            tot_req += k.get(i);&lt;br /&gt;
        }&lt;br /&gt;
        return tot_req - tot_prov;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; g = Arrays.asList(8, 5, 3, 2, 4, 1, 7);&lt;br /&gt;
        System.out.println(&amp;quot;The missing number is &amp;quot; + findMissing(g));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Mergesort==&lt;br /&gt;
public class MergeSort {&lt;br /&gt;
&lt;br /&gt;
    private static Comparable[] aux;&lt;br /&gt;
&lt;br /&gt;
    public static void sort(Comparable[] a) {&lt;br /&gt;
        aux = new Comparable[a.length];&lt;br /&gt;
        sort(a, 0, a.length - 1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void merge(Comparable[] a, int lo, int mid, int hi) {&lt;br /&gt;
        assert isSorted(a, lo, mid);&lt;br /&gt;
        assert isSorted(a, mid + 1, hi);&lt;br /&gt;
        //copy for [] a to [] aux&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            aux[k] = a[k];&lt;br /&gt;
        }&lt;br /&gt;
        // the merging process&lt;br /&gt;
        // i is the first index of the first half of the array&lt;br /&gt;
        // j is the first index of the second half of the array&lt;br /&gt;
        int i = lo, j = mid + 1;&lt;br /&gt;
&lt;br /&gt;
        // for every value of k - the indices of [] a&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            /*Left half exhausted take from the right*/&lt;br /&gt;
            if (i &amp;gt; mid)&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Right half exhausted take from the left*/&lt;br /&gt;
            else if (j &amp;gt; hi)&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
                /*Current key on the right less than current key on the left take from the right*/&lt;br /&gt;
            else if (less(aux[j], aux[i]))&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Current key on the right greater than current key on the left take from the left */&lt;br /&gt;
            else&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
        }&lt;br /&gt;
        assert isSorted(a, lo, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void sort(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        if (hi &amp;lt;= lo)&lt;br /&gt;
            return;&lt;br /&gt;
        int mid = lo + (hi - lo) / 2;&lt;br /&gt;
        sort(a, lo, mid);&lt;br /&gt;
        sort(a, mid + 1, hi);&lt;br /&gt;
        merge(a, lo, mid, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean less(Comparable v, Comparable w) {&lt;br /&gt;
        return v.compareTo(w) &amp;lt; 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean isSorted(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        for (int i = lo + 1; i &amp;lt;= hi; i++)&lt;br /&gt;
            if (less(a[i], a[i - 1])) return false;&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void show(Comparable[] a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length; i++) {&lt;br /&gt;
            //System.out.print(a[i]);&lt;br /&gt;
            System.out.println(a[i]);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        // Comparable[] a = {&amp;quot;E&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;A&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;T&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
        Comparable[] aa = {&amp;quot;A&amp;quot;, &amp;quot;X&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;};&lt;br /&gt;
        Comparable[] bb = {&amp;quot;H&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;J&amp;quot;, &amp;quot;Y&amp;quot;, &amp;quot;Z&amp;quot;};&lt;br /&gt;
        /*Merge the two comparable arrays*/&lt;br /&gt;
        Comparable[] a = new Comparable[aa.length + bb.length];&lt;br /&gt;
        System.arraycopy(aa, 0, a, 0, aa.length);&lt;br /&gt;
        System.arraycopy(bb, 0, a, aa.length, bb.length);&lt;br /&gt;
&lt;br /&gt;
        MergeSort.sort(a);&lt;br /&gt;
        show(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Binary Search==&lt;br /&gt;
public class BinarySearch {&lt;br /&gt;
    public static int find(int[] arr, int target) {&lt;br /&gt;
        int left = 0;&lt;br /&gt;
        int right = arr.length - 1;&lt;br /&gt;
        while (left &amp;lt;= right) {&lt;br /&gt;
            int mid = left + (right - left);&lt;br /&gt;
            if (arr[mid] == target)&lt;br /&gt;
                return mid;&lt;br /&gt;
            if (arr[mid] &amp;lt; target) {&lt;br /&gt;
                left = mid + 1;&lt;br /&gt;
            } else {&lt;br /&gt;
                right = mid - 1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return -1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        int[] f = {1, 10, 20, 47, 59, 63, 75, 88, 99, 107, 120, 133, 155, 162, 176, 188, 199, 200, 210, 222, 223};&lt;br /&gt;
        int t = 162;&lt;br /&gt;
        System.out.println(find(f, t));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Validate Binary Search Tree==&lt;br /&gt;
&lt;br /&gt;
Given a Binary Tree, figure out whether it’s a Binary Search Tree. In a binary search tree, each node’s key value is smaller than the key value of all nodes in the right subtree, and is greater than the key values of all nodes in the left subtree. Below is an example of a binary tree that is a valid BST.&lt;br /&gt;
&lt;br /&gt;
public class BinarySearchTree {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int value) {&lt;br /&gt;
            this.value = value;&lt;br /&gt;
            this.left = null;&lt;br /&gt;
            this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public BinarySearchTree() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    public boolean isbst(Node root, Node l, Node r) {&lt;br /&gt;
        if (root == null)&lt;br /&gt;
            return true;&lt;br /&gt;
        if (l != null &amp;amp;&amp;amp; l.value &amp;gt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        if (r != null &amp;amp;&amp;amp; r.value &amp;lt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        return isbst(root.left, l, root) &amp;amp;&amp;amp; isbst(root.right, root, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        BinarySearchTree bt = new BinarySearchTree();&lt;br /&gt;
        bt.root = new Node(10);&lt;br /&gt;
        bt.root.left = new Node(5);&lt;br /&gt;
        bt.root.right = new Node(15);&lt;br /&gt;
        bt.root.left.left = new Node(4);&lt;br /&gt;
        bt.root.left.right = new Node(7);&lt;br /&gt;
        bt.root.right.left = new Node(13);&lt;br /&gt;
        bt.root.right.right = new Node(26);&lt;br /&gt;
        if (bt.isbst(bt.root, null, null))&lt;br /&gt;
            System.out.println(&amp;quot;Is a BST&amp;quot;);&lt;br /&gt;
        else&lt;br /&gt;
            System.out.println(&amp;quot;Is not a BST&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Determine if two integers add up to given number==&lt;br /&gt;
Given an array of integers and a value, determine if there are any two integers in the array whose sum is equal to the given value. Return true if the sum exists and return false if it does not. Consider this array and the target sums:&lt;br /&gt;
public class SumOfTwo {&lt;br /&gt;
        public static void main(String args[]) {&lt;br /&gt;
            Set&amp;lt;Integer&amp;gt; set = new HashSet&amp;lt;&amp;gt;(); /*Populate this Set with target values*/&lt;br /&gt;
            /*Array of target values*/&lt;br /&gt;
            int[] g = {5, 6, 8, 39, 9, 11, 20, 59, 10, 1};&lt;br /&gt;
            /*Insert the arrays values in the set*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                set.add(g[i]);&lt;br /&gt;
            }&lt;br /&gt;
            /*Set a target number to check for*/&lt;br /&gt;
            int y = 20;&lt;br /&gt;
            /*If there are a set of numbers that would add up, increment this counter*/&lt;br /&gt;
            int counter = 0;&lt;br /&gt;
            /*Pick up a number in the set by turns and assign it to x*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                int x = g[i];&lt;br /&gt;
                /*Check to see if the set contains target minus found number.*/&lt;br /&gt;
                if (set.contains(y - x)) { //if this is true&lt;br /&gt;
                    /*If so, increment the counter by 1*/&lt;br /&gt;
                    counter += 1;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (counter &amp;gt; 0) { /*Some numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            } else { /*No numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are no sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Merge two sorted lists==&lt;br /&gt;
Given two sorted linked lists, merge them so that the resulting linked list is also sorted. Consider two sorted linked lists and the merged list below them as an example.&lt;br /&gt;
import java.util.Stack;&lt;br /&gt;
/*This code merges two ordered lists into one keeping their increasing order&lt;br /&gt;
 * the lists used for testing are in the main function*/&lt;br /&gt;
public class MergeLists {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int data;&lt;br /&gt;
        Node next;&lt;br /&gt;
        Node(int z) {&lt;br /&gt;
            this.data = z;&lt;br /&gt;
            next = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads the values of a list and loads them on a Stack, then reads from the stack*/&lt;br /&gt;
    public static void loadInStack(Node f) {&lt;br /&gt;
        Stack&amp;lt;Integer&amp;gt; pack = new Stack&amp;lt;&amp;gt;();&lt;br /&gt;
        if (f == null)&lt;br /&gt;
            return;&lt;br /&gt;
        pack.push(f.data);&lt;br /&gt;
        loadInStack(f.next);&lt;br /&gt;
        System.out.println(pack);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function duplicates the provided list into another one*/&lt;br /&gt;
    public static void duplicateList(Node m) {&lt;br /&gt;
        Node hold = new Node(-1);&lt;br /&gt;
        if (m == null)&lt;br /&gt;
            return;&lt;br /&gt;
        hold.data = m.data;&lt;br /&gt;
        duplicateList(m.next);&lt;br /&gt;
        System.out.println(hold.data);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads from two lists picking the lesser of*/&lt;br /&gt;
    /*It takes in two lists as variables a and b*/&lt;br /&gt;
    public static void pickTwo(Node a, Node b) {&lt;br /&gt;
        /*This is a dummy list initialized with -1*/&lt;br /&gt;
        Node dummyList = new Node(-1);&lt;br /&gt;
        while (a != null &amp;amp;&amp;amp; b != null) {&lt;br /&gt;
            if (a.data &amp;lt;= b.data) {&lt;br /&gt;
                /*populate the dummy list from a, if smaller*/&lt;br /&gt;
                dummyList.data = a.data;&lt;br /&gt;
                /*Increment a*/&lt;br /&gt;
                a = a.next;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*populate the dummy list from b, if smaller*/&lt;br /&gt;
                dummyList.data = b.data;&lt;br /&gt;
                /*Increment b*/&lt;br /&gt;
                b = b.next;&lt;br /&gt;
            }&lt;br /&gt;
            /*Print when done*/&lt;br /&gt;
            System.out.print(dummyList.data + &amp;quot; -&amp;gt; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Node f = new Node(2);&lt;br /&gt;
        Node g = new Node(7);&lt;br /&gt;
        Node h = new Node(8);&lt;br /&gt;
        Node i = new Node(11);&lt;br /&gt;
&lt;br /&gt;
        f.next = g;&lt;br /&gt;
        g.next = h;&lt;br /&gt;
        h.next = i;&lt;br /&gt;
&lt;br /&gt;
        //printNodes(f);&lt;br /&gt;
&lt;br /&gt;
        Node k = new Node(4);&lt;br /&gt;
        Node l = new Node(6);&lt;br /&gt;
        Node m = new Node(9);&lt;br /&gt;
        Node n = new Node(10);&lt;br /&gt;
        Node o = new Node(12);&lt;br /&gt;
&lt;br /&gt;
        k.next = l;&lt;br /&gt;
        l.next = m;&lt;br /&gt;
        m.next = n;&lt;br /&gt;
        n.next = o;&lt;br /&gt;
&lt;br /&gt;
        //loadInStack(f);&lt;br /&gt;
        //duplicateList(k);&lt;br /&gt;
        pickTwo(f, k);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Reverse String==&lt;br /&gt;
&lt;br /&gt;
Reverse the order of words in a given sentence (an array of characters).&lt;br /&gt;
&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class ReverseString {&lt;br /&gt;
    public static void lizy(String[] curr) {&lt;br /&gt;
        LinkedList&amp;lt;String&amp;gt; y = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        for (int g = 0; g &amp;lt;= curr.length - 1; g++) {&lt;br /&gt;
            y.add(curr[g]);&lt;br /&gt;
        }&lt;br /&gt;
        Iterator i = y.descendingIterator();&lt;br /&gt;
        while (i.hasNext()) {&lt;br /&gt;
            System.out.print(i.next() + &amp;quot; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        String given = &amp;quot;Hello World&amp;quot;;&lt;br /&gt;
        String[] given_array = given.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String lineOfCurrencies = &amp;quot;USD JPY AUD SGD HKD CAD CHF GBP EURO INR&amp;quot;;&lt;br /&gt;
        String multispace = &amp;quot;Kenya    Uganda Tanzania   Burundi     Rwanda&amp;quot;;&lt;br /&gt;
        String[] currencies = lineOfCurrencies.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String[] ms = multispace.split(&amp;quot;\\s+&amp;quot;);&lt;br /&gt;
        ReverseString.lizy(given_array);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Level Order Traversal of Binary Tree==&lt;br /&gt;
&lt;br /&gt;
Given the root of a binary tree, display the node values at each level. Node values for all levels should be displayed on separate lines. Let’s take a look at the below binary tree.&lt;br /&gt;
&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class Lot {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int v) {&lt;br /&gt;
            this.value = v;&lt;br /&gt;
            this.left = this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public Lot() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    void lot() {&lt;br /&gt;
        LinkedList&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        //Queue&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;Node&amp;gt;();&lt;br /&gt;
        queue.add(root);&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Node tempNode = queue.removeFirst();&lt;br /&gt;
            //Node tempNode = queue.poll();&lt;br /&gt;
            System.out.print(tempNode.value + &amp;quot; &amp;quot;);&lt;br /&gt;
            if (tempNode.left != null)&lt;br /&gt;
                queue.add(tempNode.left);&lt;br /&gt;
            if (tempNode.right != null)&lt;br /&gt;
                queue.add(tempNode.right);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Lot l = new Lot();&lt;br /&gt;
        l.root = new Node(100);&lt;br /&gt;
        l.root.left = new Node(50);&lt;br /&gt;
        l.root.right = new Node(200);&lt;br /&gt;
        l.root.left.left = new Node(25);&lt;br /&gt;
        l.root.left.right = new Node(75);&lt;br /&gt;
        l.root.right.right = new Node(350);&lt;br /&gt;
        System.out.println(&amp;quot;Level order traversal is as follows: &amp;quot;);&lt;br /&gt;
        l.lot();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==String Segmentation==&lt;br /&gt;
You are given a dictionary of words and a large input string. You have to find out whether the input string can be completely segmented into the words of a given dictionary. The following two examples elaborate on the problem further.&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
&lt;br /&gt;
public class Dictionary {&lt;br /&gt;
    boolean pair(Set&amp;lt;String&amp;gt; dictionary, String a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length(); i++) {&lt;br /&gt;
            String first_word = a.substring(0, i);&lt;br /&gt;
            if (dictionary.contains(first_word)) {&lt;br /&gt;
                String second_word = a.substring(i);&lt;br /&gt;
                if (dictionary.contains(second_word) || pair(dictionary, second_word)) {&lt;br /&gt;
                    return true;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        Dictionary dictionary = new Dictionary();&lt;br /&gt;
        Set&amp;lt;String&amp;gt; dict = new HashSet&amp;lt;&amp;gt;();&lt;br /&gt;
        dict.add(&amp;quot;geo&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;science&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;politics&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;thermal&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;physical&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;mis&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;under&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;stand&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;understand&amp;quot;);&lt;br /&gt;
        String word = &amp;quot;misunderstand&amp;quot;;&lt;br /&gt;
        if (dictionary.pair(dict, word)) {&lt;br /&gt;
            System.out.println(&amp;quot;The test word &amp;quot; + word + &amp;quot; fits in two words in the dictionary&amp;quot;);&lt;br /&gt;
        } else {&lt;br /&gt;
            System.out.println(&amp;quot;The test word &amp;quot; + word + &amp;quot; does not make dictionary words&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Computing number combinations==&lt;br /&gt;
Suppose we have coin denominations of [1, 2, 5] and the total amount is 7. We can make changes in the following 6 ways:&lt;br /&gt;
&lt;br /&gt;
public class Arrays {&lt;br /&gt;
    static int changeOptions(int[] denominations, int amount) {&lt;br /&gt;
        int[] solution = new int[amount + 1];&lt;br /&gt;
        solution[0] = 1;&lt;br /&gt;
        for (int x : denominations) {&lt;br /&gt;
            for (int i = x; i &amp;lt; (amount + 1); ++i) {&lt;br /&gt;
                solution[i] += solution[i - x];&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return solution[solution.length - 1];&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        int[] denominations = new int[]{1, 2, 5, 10};&lt;br /&gt;
        int amount = 5;&lt;br /&gt;
        int result = changeOptions(denominations, amount);&lt;br /&gt;
        System.out.println(&amp;quot;There are &amp;quot; + result + &amp;quot; combinations in forming &amp;quot; + amount + &amp;quot; given the factors below: &amp;quot;);&lt;br /&gt;
        for (int denomination : denominations) {&lt;br /&gt;
            System.out.println(denomination);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=Algorithms&amp;diff=145</id>
		<title>Algorithms</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=Algorithms&amp;diff=145"/>
		<updated>2022-10-25T00:02:56Z</updated>

		<summary type="html">&lt;p&gt;Leksy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Java Graph Implementation with Search Methods==&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class Chart {&lt;br /&gt;
    static class Employee {&lt;br /&gt;
        int id;&lt;br /&gt;
        String firstName;&lt;br /&gt;
        String lastName;&lt;br /&gt;
        String jobTitle;&lt;br /&gt;
        boolean mapped;&lt;br /&gt;
&lt;br /&gt;
        Employee(int id, String fn, String ln, String jt) {&lt;br /&gt;
            this.id = id;&lt;br /&gt;
            this.jobTitle = jt;&lt;br /&gt;
            this.firstName = fn;&lt;br /&gt;
            this.lastName = ln;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void map() {&lt;br /&gt;
            mapped = true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void unmap() {&lt;br /&gt;
            mapped = false;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private final HashMap&amp;lt;Employee, LinkedList&amp;lt;Employee&amp;gt;&amp;gt; assignment;&lt;br /&gt;
&lt;br /&gt;
    public Chart(boolean directed) {&lt;br /&gt;
        assignment = new HashMap&amp;lt;&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdgeHelper(Employee a, Employee b) {&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; e = assignment.get(a);&lt;br /&gt;
        if (e != null) {&lt;br /&gt;
            assignment.remove(b);&lt;br /&gt;
        } else&lt;br /&gt;
            e = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        e.add(b);&lt;br /&gt;
        assignment.put(a, e);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdge(Employee boss, Employee subordinate) {&lt;br /&gt;
        if (!assignment.containsKey(boss))&lt;br /&gt;
            assignment.put(boss, null);&lt;br /&gt;
        if (!assignment.containsKey(subordinate))&lt;br /&gt;
            assignment.put(subordinate, null);&lt;br /&gt;
        addEdgeHelper(boss, subordinate);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void depthFirstSearch(Employee employee) {&lt;br /&gt;
        employee.map();&lt;br /&gt;
        System.out.println(employee.firstName + &amp;quot; &amp;quot; + employee.lastName + &amp;quot; is a &amp;quot; + employee.jobTitle);&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; neighbors = assignment.get(employee);&lt;br /&gt;
        if (neighbors == null)&lt;br /&gt;
            return;&lt;br /&gt;
        for (Employee e : neighbors) {&lt;br /&gt;
            if (!e.mapped)&lt;br /&gt;
                depthFirstSearch(e);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void breadthFirstSearch(Employee employee) {&lt;br /&gt;
        /*Check if target item is null - if so quit*/&lt;br /&gt;
        if (employee == null)&lt;br /&gt;
            return;&lt;br /&gt;
        /*Declare a queue using LinkedList and add the target item*/&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        queue.add(employee);&lt;br /&gt;
        /*As long as the queue has data get the first in item .removeFirst*/&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Employee currentFirst = queue.removeFirst();&lt;br /&gt;
            /*If visited move on*/&lt;br /&gt;
            if (currentFirst.mapped) {&lt;br /&gt;
                continue;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*else visit it and print it*/&lt;br /&gt;
                currentFirst.map();&lt;br /&gt;
                System.out.println(currentFirst.id + &amp;quot;: &amp;quot; + currentFirst.firstName + &amp;quot; &amp;quot; + currentFirst.lastName + &amp;quot; - &amp;quot; + currentFirst.jobTitle);&lt;br /&gt;
            }&lt;br /&gt;
            /*Find neighbors of the current item*/&lt;br /&gt;
            LinkedList&amp;lt;Employee&amp;gt; allNeighbors = assignment.get(currentFirst);&lt;br /&gt;
            /*If there are none move on*/&lt;br /&gt;
            if (allNeighbors == null)&lt;br /&gt;
                continue;&lt;br /&gt;
            /*else if there are some and not visited, add them to the queue and the process starts over*/&lt;br /&gt;
            for (Employee e : allNeighbors) {&lt;br /&gt;
                if (!e.mapped)&lt;br /&gt;
                    queue.add(e);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void resetMapping() {&lt;br /&gt;
        for (Employee e : assignment.keySet()) {&lt;br /&gt;
            e.unmap();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Employee a = new Employee(38, &amp;quot;Jimbo&amp;quot;, &amp;quot;Jones&amp;quot;, &amp;quot;President&amp;quot;);&lt;br /&gt;
        Employee b = new Employee(39, &amp;quot;Mike&amp;quot;, &amp;quot;McCobb&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee c = new Employee(43, &amp;quot;Elda&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee d = new Employee(48, &amp;quot;Simon&amp;quot;, &amp;quot;Sneeth&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee e = new Employee(56, &amp;quot;Tim&amp;quot;, &amp;quot;Scott&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee f = new Employee(58, &amp;quot;Bob&amp;quot;, &amp;quot;Tilman&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee g = new Employee(78, &amp;quot;Andrew&amp;quot;, &amp;quot;Cole&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee h = new Employee(83, &amp;quot;Matt&amp;quot;, &amp;quot;Lemon&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee i = new Employee(88, &amp;quot;Chris&amp;quot;, &amp;quot;Lock&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee j = new Employee(71, &amp;quot;Agnes&amp;quot;, &amp;quot;White&amp;quot;, &amp;quot;Accountant&amp;quot;);&lt;br /&gt;
        Employee k = new Employee(61, &amp;quot;George&amp;quot;, &amp;quot;Mills&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee l = new Employee(59, &amp;quot;Thomas&amp;quot;, &amp;quot;Wells&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee m = new Employee(63, &amp;quot;Zip&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee n = new Employee(73, &amp;quot;Rasta&amp;quot;, &amp;quot;Him&amp;quot;, &amp;quot;Technician&amp;quot;);&lt;br /&gt;
        Employee o = new Employee(89, &amp;quot;Claire&amp;quot;, &amp;quot;Collins&amp;quot;, &amp;quot;Supervisor&amp;quot;);&lt;br /&gt;
        Employee p = new Employee(95, &amp;quot;Jim&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee q = new Employee(104, &amp;quot;Tom&amp;quot;, &amp;quot;Flat&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee r = new Employee(64, &amp;quot;Grace&amp;quot;, &amp;quot;Marks&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee s = new Employee(68, &amp;quot;Dan&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee t = new Employee(117, &amp;quot;Shad&amp;quot;, &amp;quot;Fifty&amp;quot;, &amp;quot;Security&amp;quot;);&lt;br /&gt;
        Employee u = new Employee(108, &amp;quot;Tall&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
        Employee v = new Employee(109, &amp;quot;Short&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        Chart chart = new Chart(true);&lt;br /&gt;
        chart.addEdge(a, b);&lt;br /&gt;
        chart.addEdge(a, c);&lt;br /&gt;
        chart.addEdge(a, d);&lt;br /&gt;
        chart.addEdge(b, e);&lt;br /&gt;
        chart.addEdge(b, f);&lt;br /&gt;
        chart.addEdge(e, g);&lt;br /&gt;
        chart.addEdge(e, h);&lt;br /&gt;
        chart.addEdge(e, i);&lt;br /&gt;
        chart.addEdge(f, j);&lt;br /&gt;
        chart.addEdge(c, k);&lt;br /&gt;
        chart.addEdge(c, l);&lt;br /&gt;
        chart.addEdge(c, m);&lt;br /&gt;
        chart.addEdge(l, n);&lt;br /&gt;
        chart.addEdge(k, o);&lt;br /&gt;
        chart.addEdge(o, p);&lt;br /&gt;
        chart.addEdge(o, q);&lt;br /&gt;
        chart.addEdge(d, r);&lt;br /&gt;
        chart.addEdge(d, s);&lt;br /&gt;
        chart.addEdge(s, t);&lt;br /&gt;
        chart.addEdge(r, u);&lt;br /&gt;
        chart.addEdge(r, v);&lt;br /&gt;
        //System.out.println(a.firstName + &amp;quot; &amp;quot; + a.lastName + &amp;quot; &amp;quot; + a.jobTitle + &amp;quot; &amp;quot; + a.id);&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        //chart.depthFirstSearch(k);&lt;br /&gt;
&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        chart.breadthFirstSearch(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Find missing number==&lt;br /&gt;
You are given an array of positive numbers from 1 to n, such that all numbers from 1 to n are present except one number x. You have to find x. The input array is not sorted. Look at the below array and give it a try before checking the solution.&lt;br /&gt;
&lt;br /&gt;
The missing number = a sum of the provided array subtracted from a sum of indices + 2&lt;br /&gt;
example 1, 2, 4 missing is 3 = (1 +2 +3+4) - (1 +2+4)&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
public class MissingNum {&lt;br /&gt;
    public static int findMissing(List&amp;lt;Integer&amp;gt; l) {&lt;br /&gt;
        int tot_prov = 0;&lt;br /&gt;
        for (Integer integer : l) {&lt;br /&gt;
            tot_prov += integer;&lt;br /&gt;
        }&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; k = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;
        int tot_req = 0;&lt;br /&gt;
        for (int i = 0; i &amp;lt; l.size() + 2; i++) {&lt;br /&gt;
            k.add(i);&lt;br /&gt;
            tot_req += k.get(i);&lt;br /&gt;
        }&lt;br /&gt;
        return tot_req - tot_prov;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; g = Arrays.asList(8, 5, 3, 2, 4, 1, 7);&lt;br /&gt;
        System.out.println(&amp;quot;The missing number is &amp;quot; + findMissing(g));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Mergesort==&lt;br /&gt;
public class MergeSort {&lt;br /&gt;
&lt;br /&gt;
    private static Comparable[] aux;&lt;br /&gt;
&lt;br /&gt;
    public static void sort(Comparable[] a) {&lt;br /&gt;
        aux = new Comparable[a.length];&lt;br /&gt;
        sort(a, 0, a.length - 1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void merge(Comparable[] a, int lo, int mid, int hi) {&lt;br /&gt;
        assert isSorted(a, lo, mid);&lt;br /&gt;
        assert isSorted(a, mid + 1, hi);&lt;br /&gt;
        //copy for [] a to [] aux&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            aux[k] = a[k];&lt;br /&gt;
        }&lt;br /&gt;
        // the merging process&lt;br /&gt;
        // i is the first index of the first half of the array&lt;br /&gt;
        // j is the first index of the second half of the array&lt;br /&gt;
        int i = lo, j = mid + 1;&lt;br /&gt;
&lt;br /&gt;
        // for every value of k - the indices of [] a&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            /*Left half exhausted take from the right*/&lt;br /&gt;
            if (i &amp;gt; mid)&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Right half exhausted take from the left*/&lt;br /&gt;
            else if (j &amp;gt; hi)&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
                /*Current key on the right less than current key on the left take from the right*/&lt;br /&gt;
            else if (less(aux[j], aux[i]))&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Current key on the right greater than current key on the left take from the left */&lt;br /&gt;
            else&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
        }&lt;br /&gt;
        assert isSorted(a, lo, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void sort(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        if (hi &amp;lt;= lo)&lt;br /&gt;
            return;&lt;br /&gt;
        int mid = lo + (hi - lo) / 2;&lt;br /&gt;
        sort(a, lo, mid);&lt;br /&gt;
        sort(a, mid + 1, hi);&lt;br /&gt;
        merge(a, lo, mid, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean less(Comparable v, Comparable w) {&lt;br /&gt;
        return v.compareTo(w) &amp;lt; 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean isSorted(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        for (int i = lo + 1; i &amp;lt;= hi; i++)&lt;br /&gt;
            if (less(a[i], a[i - 1])) return false;&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void show(Comparable[] a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length; i++) {&lt;br /&gt;
            //System.out.print(a[i]);&lt;br /&gt;
            System.out.println(a[i]);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        // Comparable[] a = {&amp;quot;E&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;A&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;T&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
        Comparable[] aa = {&amp;quot;A&amp;quot;, &amp;quot;X&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;};&lt;br /&gt;
        Comparable[] bb = {&amp;quot;H&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;J&amp;quot;, &amp;quot;Y&amp;quot;, &amp;quot;Z&amp;quot;};&lt;br /&gt;
        /*Merge the two comparable arrays*/&lt;br /&gt;
        Comparable[] a = new Comparable[aa.length + bb.length];&lt;br /&gt;
        System.arraycopy(aa, 0, a, 0, aa.length);&lt;br /&gt;
        System.arraycopy(bb, 0, a, aa.length, bb.length);&lt;br /&gt;
&lt;br /&gt;
        MergeSort.sort(a);&lt;br /&gt;
        show(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Binary Search==&lt;br /&gt;
public class BinarySearch {&lt;br /&gt;
    public static int find(int[] arr, int target) {&lt;br /&gt;
        int left = 0;&lt;br /&gt;
        int right = arr.length - 1;&lt;br /&gt;
        while (left &amp;lt;= right) {&lt;br /&gt;
            int mid = left + (right - left);&lt;br /&gt;
            if (arr[mid] == target)&lt;br /&gt;
                return mid;&lt;br /&gt;
            if (arr[mid] &amp;lt; target) {&lt;br /&gt;
                left = mid + 1;&lt;br /&gt;
            } else {&lt;br /&gt;
                right = mid - 1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return -1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        int[] f = {1, 10, 20, 47, 59, 63, 75, 88, 99, 107, 120, 133, 155, 162, 176, 188, 199, 200, 210, 222, 223};&lt;br /&gt;
        int t = 162;&lt;br /&gt;
        System.out.println(find(f, t));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Validate Binary Search Tree==&lt;br /&gt;
&lt;br /&gt;
Given a Binary Tree, figure out whether it’s a Binary Search Tree. In a binary search tree, each node’s key value is smaller than the key value of all nodes in the right subtree, and is greater than the key values of all nodes in the left subtree. Below is an example of a binary tree that is a valid BST.&lt;br /&gt;
&lt;br /&gt;
public class BinarySearchTree {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int value) {&lt;br /&gt;
            this.value = value;&lt;br /&gt;
            this.left = null;&lt;br /&gt;
            this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public BinarySearchTree() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    public boolean isbst(Node root, Node l, Node r) {&lt;br /&gt;
        if (root == null)&lt;br /&gt;
            return true;&lt;br /&gt;
        if (l != null &amp;amp;&amp;amp; l.value &amp;gt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        if (r != null &amp;amp;&amp;amp; r.value &amp;lt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        return isbst(root.left, l, root) &amp;amp;&amp;amp; isbst(root.right, root, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        BinarySearchTree bt = new BinarySearchTree();&lt;br /&gt;
        bt.root = new Node(10);&lt;br /&gt;
        bt.root.left = new Node(5);&lt;br /&gt;
        bt.root.right = new Node(15);&lt;br /&gt;
        bt.root.left.left = new Node(4);&lt;br /&gt;
        bt.root.left.right = new Node(7);&lt;br /&gt;
        bt.root.right.left = new Node(13);&lt;br /&gt;
        bt.root.right.right = new Node(26);&lt;br /&gt;
        if (bt.isbst(bt.root, null, null))&lt;br /&gt;
            System.out.println(&amp;quot;Is a BST&amp;quot;);&lt;br /&gt;
        else&lt;br /&gt;
            System.out.println(&amp;quot;Is not a BST&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Determine if two integers add up to given number==&lt;br /&gt;
Given an array of integers and a value, determine if there are any two integers in the array whose sum is equal to the given value. Return true if the sum exists and return false if it does not. Consider this array and the target sums:&lt;br /&gt;
public class SumOfTwo {&lt;br /&gt;
        public static void main(String args[]) {&lt;br /&gt;
            Set&amp;lt;Integer&amp;gt; set = new HashSet&amp;lt;&amp;gt;(); /*Populate this Set with target values*/&lt;br /&gt;
            /*Array of target values*/&lt;br /&gt;
            int[] g = {5, 6, 8, 39, 9, 11, 20, 59, 10, 1};&lt;br /&gt;
            /*Insert the arrays values in the set*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                set.add(g[i]);&lt;br /&gt;
            }&lt;br /&gt;
            /*Set a target number to check for*/&lt;br /&gt;
            int y = 20;&lt;br /&gt;
            /*If there are a set of numbers that would add up, increment this counter*/&lt;br /&gt;
            int counter = 0;&lt;br /&gt;
            /*Pick up a number in the set by turns and assign it to x*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                int x = g[i];&lt;br /&gt;
                /*Check to see if the set contains target minus found number.*/&lt;br /&gt;
                if (set.contains(y - x)) { //if this is true&lt;br /&gt;
                    /*If so, increment the counter by 1*/&lt;br /&gt;
                    counter += 1;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (counter &amp;gt; 0) { /*Some numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            } else { /*No numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are no sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Merge two sorted lists==&lt;br /&gt;
Given two sorted linked lists, merge them so that the resulting linked list is also sorted. Consider two sorted linked lists and the merged list below them as an example.&lt;br /&gt;
import java.util.Stack;&lt;br /&gt;
/*This code merges two ordered lists into one keeping their increasing order&lt;br /&gt;
 * the lists used for testing are in the main function*/&lt;br /&gt;
public class MergeLists {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int data;&lt;br /&gt;
        Node next;&lt;br /&gt;
        Node(int z) {&lt;br /&gt;
            this.data = z;&lt;br /&gt;
            next = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads the values of a list and loads them on a Stack, then reads from the stack*/&lt;br /&gt;
    public static void loadInStack(Node f) {&lt;br /&gt;
        Stack&amp;lt;Integer&amp;gt; pack = new Stack&amp;lt;&amp;gt;();&lt;br /&gt;
        if (f == null)&lt;br /&gt;
            return;&lt;br /&gt;
        pack.push(f.data);&lt;br /&gt;
        loadInStack(f.next);&lt;br /&gt;
        System.out.println(pack);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function duplicates the provided list into another one*/&lt;br /&gt;
    public static void duplicateList(Node m) {&lt;br /&gt;
        Node hold = new Node(-1);&lt;br /&gt;
        if (m == null)&lt;br /&gt;
            return;&lt;br /&gt;
        hold.data = m.data;&lt;br /&gt;
        duplicateList(m.next);&lt;br /&gt;
        System.out.println(hold.data);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads from two lists picking the lesser of*/&lt;br /&gt;
    /*It takes in two lists as variables a and b*/&lt;br /&gt;
    public static void pickTwo(Node a, Node b) {&lt;br /&gt;
        /*This is a dummy list initialized with -1*/&lt;br /&gt;
        Node dummyList = new Node(-1);&lt;br /&gt;
        while (a != null &amp;amp;&amp;amp; b != null) {&lt;br /&gt;
            if (a.data &amp;lt;= b.data) {&lt;br /&gt;
                /*populate the dummy list from a, if smaller*/&lt;br /&gt;
                dummyList.data = a.data;&lt;br /&gt;
                /*Increment a*/&lt;br /&gt;
                a = a.next;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*populate the dummy list from b, if smaller*/&lt;br /&gt;
                dummyList.data = b.data;&lt;br /&gt;
                /*Increment b*/&lt;br /&gt;
                b = b.next;&lt;br /&gt;
            }&lt;br /&gt;
            /*Print when done*/&lt;br /&gt;
            System.out.print(dummyList.data + &amp;quot; -&amp;gt; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Node f = new Node(2);&lt;br /&gt;
        Node g = new Node(7);&lt;br /&gt;
        Node h = new Node(8);&lt;br /&gt;
        Node i = new Node(11);&lt;br /&gt;
&lt;br /&gt;
        f.next = g;&lt;br /&gt;
        g.next = h;&lt;br /&gt;
        h.next = i;&lt;br /&gt;
&lt;br /&gt;
        //printNodes(f);&lt;br /&gt;
&lt;br /&gt;
        Node k = new Node(4);&lt;br /&gt;
        Node l = new Node(6);&lt;br /&gt;
        Node m = new Node(9);&lt;br /&gt;
        Node n = new Node(10);&lt;br /&gt;
        Node o = new Node(12);&lt;br /&gt;
&lt;br /&gt;
        k.next = l;&lt;br /&gt;
        l.next = m;&lt;br /&gt;
        m.next = n;&lt;br /&gt;
        n.next = o;&lt;br /&gt;
&lt;br /&gt;
        //loadInStack(f);&lt;br /&gt;
        //duplicateList(k);&lt;br /&gt;
        pickTwo(f, k);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Reverse String==&lt;br /&gt;
&lt;br /&gt;
Reverse the order of words in a given sentence (an array of characters).&lt;br /&gt;
&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class ReverseString {&lt;br /&gt;
    public static void lizy(String[] curr) {&lt;br /&gt;
        LinkedList&amp;lt;String&amp;gt; y = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        for (int g = 0; g &amp;lt;= curr.length - 1; g++) {&lt;br /&gt;
            y.add(curr[g]);&lt;br /&gt;
        }&lt;br /&gt;
        Iterator i = y.descendingIterator();&lt;br /&gt;
        while (i.hasNext()) {&lt;br /&gt;
            System.out.print(i.next() + &amp;quot; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        String given = &amp;quot;Hello World&amp;quot;;&lt;br /&gt;
        String[] given_array = given.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String lineOfCurrencies = &amp;quot;USD JPY AUD SGD HKD CAD CHF GBP EURO INR&amp;quot;;&lt;br /&gt;
        String multispace = &amp;quot;Kenya    Uganda Tanzania   Burundi     Rwanda&amp;quot;;&lt;br /&gt;
        String[] currencies = lineOfCurrencies.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String[] ms = multispace.split(&amp;quot;\\s+&amp;quot;);&lt;br /&gt;
        ReverseString.lizy(given_array);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Level Order Traversal of Binary Tree==&lt;br /&gt;
&lt;br /&gt;
Given the root of a binary tree, display the node values at each level. Node values for all levels should be displayed on separate lines. Let’s take a look at the below binary tree.&lt;br /&gt;
&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class Lot {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int v) {&lt;br /&gt;
            this.value = v;&lt;br /&gt;
            this.left = this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public Lot() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    void lot() {&lt;br /&gt;
        LinkedList&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        //Queue&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;Node&amp;gt;();&lt;br /&gt;
        queue.add(root);&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Node tempNode = queue.removeFirst();&lt;br /&gt;
            //Node tempNode = queue.poll();&lt;br /&gt;
            System.out.print(tempNode.value + &amp;quot; &amp;quot;);&lt;br /&gt;
            if (tempNode.left != null)&lt;br /&gt;
                queue.add(tempNode.left);&lt;br /&gt;
            if (tempNode.right != null)&lt;br /&gt;
                queue.add(tempNode.right);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Lot l = new Lot();&lt;br /&gt;
        l.root = new Node(100);&lt;br /&gt;
        l.root.left = new Node(50);&lt;br /&gt;
        l.root.right = new Node(200);&lt;br /&gt;
        l.root.left.left = new Node(25);&lt;br /&gt;
        l.root.left.right = new Node(75);&lt;br /&gt;
        l.root.right.right = new Node(350);&lt;br /&gt;
        System.out.println(&amp;quot;Level order traversal is as follows: &amp;quot;);&lt;br /&gt;
        l.lot();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==String Segmentation==&lt;br /&gt;
You are given a dictionary of words and a large input string. You have to find out whether the input string can be completely segmented into the words of a given dictionary. The following two examples elaborate on the problem further.&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
&lt;br /&gt;
public class Dictionary {&lt;br /&gt;
    boolean pair(Set&amp;lt;String&amp;gt; dictionary, String a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length(); i++) {&lt;br /&gt;
            String first_word = a.substring(0, i);&lt;br /&gt;
            if (dictionary.contains(first_word)) {&lt;br /&gt;
                String second_word = a.substring(i);&lt;br /&gt;
                if (dictionary.contains(second_word) || pair(dictionary, second_word)) {&lt;br /&gt;
                    return true;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        Dictionary dictionary = new Dictionary();&lt;br /&gt;
        Set&amp;lt;String&amp;gt; dict = new HashSet&amp;lt;&amp;gt;();&lt;br /&gt;
        dict.add(&amp;quot;geo&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;science&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;politics&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;thermal&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;physical&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;mis&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;under&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;stand&amp;quot;);&lt;br /&gt;
        dict.add(&amp;quot;understand&amp;quot;);&lt;br /&gt;
        String word = &amp;quot;misunderstand&amp;quot;;&lt;br /&gt;
        if (dictionary.pair(dict, word)) {&lt;br /&gt;
            System.out.println(&amp;quot;The test word &amp;quot; + word + &amp;quot; fits in two words in the dictionary&amp;quot;);&lt;br /&gt;
        } else {&lt;br /&gt;
            System.out.println(&amp;quot;The test word &amp;quot; + word + &amp;quot; does not make dictionary words&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=Algorithms&amp;diff=144</id>
		<title>Algorithms</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=Algorithms&amp;diff=144"/>
		<updated>2022-10-24T19:55:19Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* Level Order Traversal of Binary Tree */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Java Graph Implementation with Search Methods==&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class Chart {&lt;br /&gt;
    static class Employee {&lt;br /&gt;
        int id;&lt;br /&gt;
        String firstName;&lt;br /&gt;
        String lastName;&lt;br /&gt;
        String jobTitle;&lt;br /&gt;
        boolean mapped;&lt;br /&gt;
&lt;br /&gt;
        Employee(int id, String fn, String ln, String jt) {&lt;br /&gt;
            this.id = id;&lt;br /&gt;
            this.jobTitle = jt;&lt;br /&gt;
            this.firstName = fn;&lt;br /&gt;
            this.lastName = ln;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void map() {&lt;br /&gt;
            mapped = true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void unmap() {&lt;br /&gt;
            mapped = false;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private final HashMap&amp;lt;Employee, LinkedList&amp;lt;Employee&amp;gt;&amp;gt; assignment;&lt;br /&gt;
&lt;br /&gt;
    public Chart(boolean directed) {&lt;br /&gt;
        assignment = new HashMap&amp;lt;&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdgeHelper(Employee a, Employee b) {&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; e = assignment.get(a);&lt;br /&gt;
        if (e != null) {&lt;br /&gt;
            assignment.remove(b);&lt;br /&gt;
        } else&lt;br /&gt;
            e = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        e.add(b);&lt;br /&gt;
        assignment.put(a, e);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdge(Employee boss, Employee subordinate) {&lt;br /&gt;
        if (!assignment.containsKey(boss))&lt;br /&gt;
            assignment.put(boss, null);&lt;br /&gt;
        if (!assignment.containsKey(subordinate))&lt;br /&gt;
            assignment.put(subordinate, null);&lt;br /&gt;
        addEdgeHelper(boss, subordinate);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void depthFirstSearch(Employee employee) {&lt;br /&gt;
        employee.map();&lt;br /&gt;
        System.out.println(employee.firstName + &amp;quot; &amp;quot; + employee.lastName + &amp;quot; is a &amp;quot; + employee.jobTitle);&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; neighbors = assignment.get(employee);&lt;br /&gt;
        if (neighbors == null)&lt;br /&gt;
            return;&lt;br /&gt;
        for (Employee e : neighbors) {&lt;br /&gt;
            if (!e.mapped)&lt;br /&gt;
                depthFirstSearch(e);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void breadthFirstSearch(Employee employee) {&lt;br /&gt;
        /*Check if target item is null - if so quit*/&lt;br /&gt;
        if (employee == null)&lt;br /&gt;
            return;&lt;br /&gt;
        /*Declare a queue using LinkedList and add the target item*/&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        queue.add(employee);&lt;br /&gt;
        /*As long as the queue has data get the first in item .removeFirst*/&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Employee currentFirst = queue.removeFirst();&lt;br /&gt;
            /*If visited move on*/&lt;br /&gt;
            if (currentFirst.mapped) {&lt;br /&gt;
                continue;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*else visit it and print it*/&lt;br /&gt;
                currentFirst.map();&lt;br /&gt;
                System.out.println(currentFirst.id + &amp;quot;: &amp;quot; + currentFirst.firstName + &amp;quot; &amp;quot; + currentFirst.lastName + &amp;quot; - &amp;quot; + currentFirst.jobTitle);&lt;br /&gt;
            }&lt;br /&gt;
            /*Find neighbors of the current item*/&lt;br /&gt;
            LinkedList&amp;lt;Employee&amp;gt; allNeighbors = assignment.get(currentFirst);&lt;br /&gt;
            /*If there are none move on*/&lt;br /&gt;
            if (allNeighbors == null)&lt;br /&gt;
                continue;&lt;br /&gt;
            /*else if there are some and not visited, add them to the queue and the process starts over*/&lt;br /&gt;
            for (Employee e : allNeighbors) {&lt;br /&gt;
                if (!e.mapped)&lt;br /&gt;
                    queue.add(e);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void resetMapping() {&lt;br /&gt;
        for (Employee e : assignment.keySet()) {&lt;br /&gt;
            e.unmap();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Employee a = new Employee(38, &amp;quot;Jimbo&amp;quot;, &amp;quot;Jones&amp;quot;, &amp;quot;President&amp;quot;);&lt;br /&gt;
        Employee b = new Employee(39, &amp;quot;Mike&amp;quot;, &amp;quot;McCobb&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee c = new Employee(43, &amp;quot;Elda&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee d = new Employee(48, &amp;quot;Simon&amp;quot;, &amp;quot;Sneeth&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee e = new Employee(56, &amp;quot;Tim&amp;quot;, &amp;quot;Scott&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee f = new Employee(58, &amp;quot;Bob&amp;quot;, &amp;quot;Tilman&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee g = new Employee(78, &amp;quot;Andrew&amp;quot;, &amp;quot;Cole&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee h = new Employee(83, &amp;quot;Matt&amp;quot;, &amp;quot;Lemon&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee i = new Employee(88, &amp;quot;Chris&amp;quot;, &amp;quot;Lock&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee j = new Employee(71, &amp;quot;Agnes&amp;quot;, &amp;quot;White&amp;quot;, &amp;quot;Accountant&amp;quot;);&lt;br /&gt;
        Employee k = new Employee(61, &amp;quot;George&amp;quot;, &amp;quot;Mills&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee l = new Employee(59, &amp;quot;Thomas&amp;quot;, &amp;quot;Wells&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee m = new Employee(63, &amp;quot;Zip&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee n = new Employee(73, &amp;quot;Rasta&amp;quot;, &amp;quot;Him&amp;quot;, &amp;quot;Technician&amp;quot;);&lt;br /&gt;
        Employee o = new Employee(89, &amp;quot;Claire&amp;quot;, &amp;quot;Collins&amp;quot;, &amp;quot;Supervisor&amp;quot;);&lt;br /&gt;
        Employee p = new Employee(95, &amp;quot;Jim&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee q = new Employee(104, &amp;quot;Tom&amp;quot;, &amp;quot;Flat&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee r = new Employee(64, &amp;quot;Grace&amp;quot;, &amp;quot;Marks&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee s = new Employee(68, &amp;quot;Dan&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee t = new Employee(117, &amp;quot;Shad&amp;quot;, &amp;quot;Fifty&amp;quot;, &amp;quot;Security&amp;quot;);&lt;br /&gt;
        Employee u = new Employee(108, &amp;quot;Tall&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
        Employee v = new Employee(109, &amp;quot;Short&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        Chart chart = new Chart(true);&lt;br /&gt;
        chart.addEdge(a, b);&lt;br /&gt;
        chart.addEdge(a, c);&lt;br /&gt;
        chart.addEdge(a, d);&lt;br /&gt;
        chart.addEdge(b, e);&lt;br /&gt;
        chart.addEdge(b, f);&lt;br /&gt;
        chart.addEdge(e, g);&lt;br /&gt;
        chart.addEdge(e, h);&lt;br /&gt;
        chart.addEdge(e, i);&lt;br /&gt;
        chart.addEdge(f, j);&lt;br /&gt;
        chart.addEdge(c, k);&lt;br /&gt;
        chart.addEdge(c, l);&lt;br /&gt;
        chart.addEdge(c, m);&lt;br /&gt;
        chart.addEdge(l, n);&lt;br /&gt;
        chart.addEdge(k, o);&lt;br /&gt;
        chart.addEdge(o, p);&lt;br /&gt;
        chart.addEdge(o, q);&lt;br /&gt;
        chart.addEdge(d, r);&lt;br /&gt;
        chart.addEdge(d, s);&lt;br /&gt;
        chart.addEdge(s, t);&lt;br /&gt;
        chart.addEdge(r, u);&lt;br /&gt;
        chart.addEdge(r, v);&lt;br /&gt;
        //System.out.println(a.firstName + &amp;quot; &amp;quot; + a.lastName + &amp;quot; &amp;quot; + a.jobTitle + &amp;quot; &amp;quot; + a.id);&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        //chart.depthFirstSearch(k);&lt;br /&gt;
&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        chart.breadthFirstSearch(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Find missing number==&lt;br /&gt;
You are given an array of positive numbers from 1 to n, such that all numbers from 1 to n are present except one number x. You have to find x. The input array is not sorted. Look at the below array and give it a try before checking the solution.&lt;br /&gt;
&lt;br /&gt;
The missing number = a sum of the provided array subtracted from a sum of indices + 2&lt;br /&gt;
example 1, 2, 4 missing is 3 = (1 +2 +3+4) - (1 +2+4)&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
public class MissingNum {&lt;br /&gt;
    public static int findMissing(List&amp;lt;Integer&amp;gt; l) {&lt;br /&gt;
        int tot_prov = 0;&lt;br /&gt;
        for (Integer integer : l) {&lt;br /&gt;
            tot_prov += integer;&lt;br /&gt;
        }&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; k = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;
        int tot_req = 0;&lt;br /&gt;
        for (int i = 0; i &amp;lt; l.size() + 2; i++) {&lt;br /&gt;
            k.add(i);&lt;br /&gt;
            tot_req += k.get(i);&lt;br /&gt;
        }&lt;br /&gt;
        return tot_req - tot_prov;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; g = Arrays.asList(8, 5, 3, 2, 4, 1, 7);&lt;br /&gt;
        System.out.println(&amp;quot;The missing number is &amp;quot; + findMissing(g));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Mergesort==&lt;br /&gt;
public class MergeSort {&lt;br /&gt;
&lt;br /&gt;
    private static Comparable[] aux;&lt;br /&gt;
&lt;br /&gt;
    public static void sort(Comparable[] a) {&lt;br /&gt;
        aux = new Comparable[a.length];&lt;br /&gt;
        sort(a, 0, a.length - 1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void merge(Comparable[] a, int lo, int mid, int hi) {&lt;br /&gt;
        assert isSorted(a, lo, mid);&lt;br /&gt;
        assert isSorted(a, mid + 1, hi);&lt;br /&gt;
        //copy for [] a to [] aux&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            aux[k] = a[k];&lt;br /&gt;
        }&lt;br /&gt;
        // the merging process&lt;br /&gt;
        // i is the first index of the first half of the array&lt;br /&gt;
        // j is the first index of the second half of the array&lt;br /&gt;
        int i = lo, j = mid + 1;&lt;br /&gt;
&lt;br /&gt;
        // for every value of k - the indices of [] a&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            /*Left half exhausted take from the right*/&lt;br /&gt;
            if (i &amp;gt; mid)&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Right half exhausted take from the left*/&lt;br /&gt;
            else if (j &amp;gt; hi)&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
                /*Current key on the right less than current key on the left take from the right*/&lt;br /&gt;
            else if (less(aux[j], aux[i]))&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Current key on the right greater than current key on the left take from the left */&lt;br /&gt;
            else&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
        }&lt;br /&gt;
        assert isSorted(a, lo, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void sort(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        if (hi &amp;lt;= lo)&lt;br /&gt;
            return;&lt;br /&gt;
        int mid = lo + (hi - lo) / 2;&lt;br /&gt;
        sort(a, lo, mid);&lt;br /&gt;
        sort(a, mid + 1, hi);&lt;br /&gt;
        merge(a, lo, mid, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean less(Comparable v, Comparable w) {&lt;br /&gt;
        return v.compareTo(w) &amp;lt; 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean isSorted(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        for (int i = lo + 1; i &amp;lt;= hi; i++)&lt;br /&gt;
            if (less(a[i], a[i - 1])) return false;&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void show(Comparable[] a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length; i++) {&lt;br /&gt;
            //System.out.print(a[i]);&lt;br /&gt;
            System.out.println(a[i]);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        // Comparable[] a = {&amp;quot;E&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;A&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;T&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
        Comparable[] aa = {&amp;quot;A&amp;quot;, &amp;quot;X&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;};&lt;br /&gt;
        Comparable[] bb = {&amp;quot;H&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;J&amp;quot;, &amp;quot;Y&amp;quot;, &amp;quot;Z&amp;quot;};&lt;br /&gt;
        /*Merge the two comparable arrays*/&lt;br /&gt;
        Comparable[] a = new Comparable[aa.length + bb.length];&lt;br /&gt;
        System.arraycopy(aa, 0, a, 0, aa.length);&lt;br /&gt;
        System.arraycopy(bb, 0, a, aa.length, bb.length);&lt;br /&gt;
&lt;br /&gt;
        MergeSort.sort(a);&lt;br /&gt;
        show(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Binary Search==&lt;br /&gt;
public class BinarySearch {&lt;br /&gt;
    public static int find(int[] arr, int target) {&lt;br /&gt;
        int left = 0;&lt;br /&gt;
        int right = arr.length - 1;&lt;br /&gt;
        while (left &amp;lt;= right) {&lt;br /&gt;
            int mid = left + (right - left);&lt;br /&gt;
            if (arr[mid] == target)&lt;br /&gt;
                return mid;&lt;br /&gt;
            if (arr[mid] &amp;lt; target) {&lt;br /&gt;
                left = mid + 1;&lt;br /&gt;
            } else {&lt;br /&gt;
                right = mid - 1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return -1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        int[] f = {1, 10, 20, 47, 59, 63, 75, 88, 99, 107, 120, 133, 155, 162, 176, 188, 199, 200, 210, 222, 223};&lt;br /&gt;
        int t = 162;&lt;br /&gt;
        System.out.println(find(f, t));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Validate Binary Search Tree==&lt;br /&gt;
&lt;br /&gt;
Given a Binary Tree, figure out whether it’s a Binary Search Tree. In a binary search tree, each node’s key value is smaller than the key value of all nodes in the right subtree, and is greater than the key values of all nodes in the left subtree. Below is an example of a binary tree that is a valid BST.&lt;br /&gt;
&lt;br /&gt;
public class BinarySearchTree {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int value) {&lt;br /&gt;
            this.value = value;&lt;br /&gt;
            this.left = null;&lt;br /&gt;
            this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public BinarySearchTree() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    public boolean isbst(Node root, Node l, Node r) {&lt;br /&gt;
        if (root == null)&lt;br /&gt;
            return true;&lt;br /&gt;
        if (l != null &amp;amp;&amp;amp; l.value &amp;gt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        if (r != null &amp;amp;&amp;amp; r.value &amp;lt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        return isbst(root.left, l, root) &amp;amp;&amp;amp; isbst(root.right, root, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        BinarySearchTree bt = new BinarySearchTree();&lt;br /&gt;
        bt.root = new Node(10);&lt;br /&gt;
        bt.root.left = new Node(5);&lt;br /&gt;
        bt.root.right = new Node(15);&lt;br /&gt;
        bt.root.left.left = new Node(4);&lt;br /&gt;
        bt.root.left.right = new Node(7);&lt;br /&gt;
        bt.root.right.left = new Node(13);&lt;br /&gt;
        bt.root.right.right = new Node(26);&lt;br /&gt;
        if (bt.isbst(bt.root, null, null))&lt;br /&gt;
            System.out.println(&amp;quot;Is a BST&amp;quot;);&lt;br /&gt;
        else&lt;br /&gt;
            System.out.println(&amp;quot;Is not a BST&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Determine if two integers add up to given number==&lt;br /&gt;
Given an array of integers and a value, determine if there are any two integers in the array whose sum is equal to the given value. Return true if the sum exists and return false if it does not. Consider this array and the target sums:&lt;br /&gt;
public class SumOfTwo {&lt;br /&gt;
        public static void main(String args[]) {&lt;br /&gt;
            Set&amp;lt;Integer&amp;gt; set = new HashSet&amp;lt;&amp;gt;(); /*Populate this Set with target values*/&lt;br /&gt;
            /*Array of target values*/&lt;br /&gt;
            int[] g = {5, 6, 8, 39, 9, 11, 20, 59, 10, 1};&lt;br /&gt;
            /*Insert the arrays values in the set*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                set.add(g[i]);&lt;br /&gt;
            }&lt;br /&gt;
            /*Set a target number to check for*/&lt;br /&gt;
            int y = 20;&lt;br /&gt;
            /*If there are a set of numbers that would add up, increment this counter*/&lt;br /&gt;
            int counter = 0;&lt;br /&gt;
            /*Pick up a number in the set by turns and assign it to x*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                int x = g[i];&lt;br /&gt;
                /*Check to see if the set contains target minus found number.*/&lt;br /&gt;
                if (set.contains(y - x)) { //if this is true&lt;br /&gt;
                    /*If so, increment the counter by 1*/&lt;br /&gt;
                    counter += 1;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (counter &amp;gt; 0) { /*Some numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            } else { /*No numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are no sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Merge two sorted lists==&lt;br /&gt;
Given two sorted linked lists, merge them so that the resulting linked list is also sorted. Consider two sorted linked lists and the merged list below them as an example.&lt;br /&gt;
import java.util.Stack;&lt;br /&gt;
/*This code merges two ordered lists into one keeping their increasing order&lt;br /&gt;
 * the lists used for testing are in the main function*/&lt;br /&gt;
public class MergeLists {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int data;&lt;br /&gt;
        Node next;&lt;br /&gt;
        Node(int z) {&lt;br /&gt;
            this.data = z;&lt;br /&gt;
            next = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads the values of a list and loads them on a Stack, then reads from the stack*/&lt;br /&gt;
    public static void loadInStack(Node f) {&lt;br /&gt;
        Stack&amp;lt;Integer&amp;gt; pack = new Stack&amp;lt;&amp;gt;();&lt;br /&gt;
        if (f == null)&lt;br /&gt;
            return;&lt;br /&gt;
        pack.push(f.data);&lt;br /&gt;
        loadInStack(f.next);&lt;br /&gt;
        System.out.println(pack);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function duplicates the provided list into another one*/&lt;br /&gt;
    public static void duplicateList(Node m) {&lt;br /&gt;
        Node hold = new Node(-1);&lt;br /&gt;
        if (m == null)&lt;br /&gt;
            return;&lt;br /&gt;
        hold.data = m.data;&lt;br /&gt;
        duplicateList(m.next);&lt;br /&gt;
        System.out.println(hold.data);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads from two lists picking the lesser of*/&lt;br /&gt;
    /*It takes in two lists as variables a and b*/&lt;br /&gt;
    public static void pickTwo(Node a, Node b) {&lt;br /&gt;
        /*This is a dummy list initialized with -1*/&lt;br /&gt;
        Node dummyList = new Node(-1);&lt;br /&gt;
        while (a != null &amp;amp;&amp;amp; b != null) {&lt;br /&gt;
            if (a.data &amp;lt;= b.data) {&lt;br /&gt;
                /*populate the dummy list from a, if smaller*/&lt;br /&gt;
                dummyList.data = a.data;&lt;br /&gt;
                /*Increment a*/&lt;br /&gt;
                a = a.next;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*populate the dummy list from b, if smaller*/&lt;br /&gt;
                dummyList.data = b.data;&lt;br /&gt;
                /*Increment b*/&lt;br /&gt;
                b = b.next;&lt;br /&gt;
            }&lt;br /&gt;
            /*Print when done*/&lt;br /&gt;
            System.out.print(dummyList.data + &amp;quot; -&amp;gt; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Node f = new Node(2);&lt;br /&gt;
        Node g = new Node(7);&lt;br /&gt;
        Node h = new Node(8);&lt;br /&gt;
        Node i = new Node(11);&lt;br /&gt;
&lt;br /&gt;
        f.next = g;&lt;br /&gt;
        g.next = h;&lt;br /&gt;
        h.next = i;&lt;br /&gt;
&lt;br /&gt;
        //printNodes(f);&lt;br /&gt;
&lt;br /&gt;
        Node k = new Node(4);&lt;br /&gt;
        Node l = new Node(6);&lt;br /&gt;
        Node m = new Node(9);&lt;br /&gt;
        Node n = new Node(10);&lt;br /&gt;
        Node o = new Node(12);&lt;br /&gt;
&lt;br /&gt;
        k.next = l;&lt;br /&gt;
        l.next = m;&lt;br /&gt;
        m.next = n;&lt;br /&gt;
        n.next = o;&lt;br /&gt;
&lt;br /&gt;
        //loadInStack(f);&lt;br /&gt;
        //duplicateList(k);&lt;br /&gt;
        pickTwo(f, k);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Reverse String==&lt;br /&gt;
&lt;br /&gt;
Reverse the order of words in a given sentence (an array of characters).&lt;br /&gt;
&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class ReverseString {&lt;br /&gt;
    public static void lizy(String[] curr) {&lt;br /&gt;
        LinkedList&amp;lt;String&amp;gt; y = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        for (int g = 0; g &amp;lt;= curr.length - 1; g++) {&lt;br /&gt;
            y.add(curr[g]);&lt;br /&gt;
        }&lt;br /&gt;
        Iterator i = y.descendingIterator();&lt;br /&gt;
        while (i.hasNext()) {&lt;br /&gt;
            System.out.print(i.next() + &amp;quot; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        String given = &amp;quot;Hello World&amp;quot;;&lt;br /&gt;
        String[] given_array = given.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String lineOfCurrencies = &amp;quot;USD JPY AUD SGD HKD CAD CHF GBP EURO INR&amp;quot;;&lt;br /&gt;
        String multispace = &amp;quot;Kenya    Uganda Tanzania   Burundi     Rwanda&amp;quot;;&lt;br /&gt;
        String[] currencies = lineOfCurrencies.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String[] ms = multispace.split(&amp;quot;\\s+&amp;quot;);&lt;br /&gt;
        ReverseString.lizy(given_array);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Level Order Traversal of Binary Tree==&lt;br /&gt;
&lt;br /&gt;
Given the root of a binary tree, display the node values at each level. Node values for all levels should be displayed on separate lines. Let’s take a look at the below binary tree.&lt;br /&gt;
&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class Lot {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int v) {&lt;br /&gt;
            this.value = v;&lt;br /&gt;
            this.left = this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public Lot() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    void lot() {&lt;br /&gt;
        LinkedList&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        //Queue&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;Node&amp;gt;();&lt;br /&gt;
        queue.add(root);&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Node tempNode = queue.removeFirst();&lt;br /&gt;
            //Node tempNode = queue.poll();&lt;br /&gt;
            System.out.print(tempNode.value + &amp;quot; &amp;quot;);&lt;br /&gt;
            if (tempNode.left != null)&lt;br /&gt;
                queue.add(tempNode.left);&lt;br /&gt;
            if (tempNode.right != null)&lt;br /&gt;
                queue.add(tempNode.right);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Lot l = new Lot();&lt;br /&gt;
        l.root = new Node(100);&lt;br /&gt;
        l.root.left = new Node(50);&lt;br /&gt;
        l.root.right = new Node(200);&lt;br /&gt;
        l.root.left.left = new Node(25);&lt;br /&gt;
        l.root.left.right = new Node(75);&lt;br /&gt;
        l.root.right.right = new Node(350);&lt;br /&gt;
        System.out.println(&amp;quot;Level order traversal is as follows: &amp;quot;);&lt;br /&gt;
        l.lot();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=Algorithms&amp;diff=143</id>
		<title>Algorithms</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=Algorithms&amp;diff=143"/>
		<updated>2022-10-24T19:55:00Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* Level Order Traversal of Binary Tree */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Java Graph Implementation with Search Methods==&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class Chart {&lt;br /&gt;
    static class Employee {&lt;br /&gt;
        int id;&lt;br /&gt;
        String firstName;&lt;br /&gt;
        String lastName;&lt;br /&gt;
        String jobTitle;&lt;br /&gt;
        boolean mapped;&lt;br /&gt;
&lt;br /&gt;
        Employee(int id, String fn, String ln, String jt) {&lt;br /&gt;
            this.id = id;&lt;br /&gt;
            this.jobTitle = jt;&lt;br /&gt;
            this.firstName = fn;&lt;br /&gt;
            this.lastName = ln;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void map() {&lt;br /&gt;
            mapped = true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void unmap() {&lt;br /&gt;
            mapped = false;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private final HashMap&amp;lt;Employee, LinkedList&amp;lt;Employee&amp;gt;&amp;gt; assignment;&lt;br /&gt;
&lt;br /&gt;
    public Chart(boolean directed) {&lt;br /&gt;
        assignment = new HashMap&amp;lt;&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdgeHelper(Employee a, Employee b) {&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; e = assignment.get(a);&lt;br /&gt;
        if (e != null) {&lt;br /&gt;
            assignment.remove(b);&lt;br /&gt;
        } else&lt;br /&gt;
            e = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        e.add(b);&lt;br /&gt;
        assignment.put(a, e);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdge(Employee boss, Employee subordinate) {&lt;br /&gt;
        if (!assignment.containsKey(boss))&lt;br /&gt;
            assignment.put(boss, null);&lt;br /&gt;
        if (!assignment.containsKey(subordinate))&lt;br /&gt;
            assignment.put(subordinate, null);&lt;br /&gt;
        addEdgeHelper(boss, subordinate);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void depthFirstSearch(Employee employee) {&lt;br /&gt;
        employee.map();&lt;br /&gt;
        System.out.println(employee.firstName + &amp;quot; &amp;quot; + employee.lastName + &amp;quot; is a &amp;quot; + employee.jobTitle);&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; neighbors = assignment.get(employee);&lt;br /&gt;
        if (neighbors == null)&lt;br /&gt;
            return;&lt;br /&gt;
        for (Employee e : neighbors) {&lt;br /&gt;
            if (!e.mapped)&lt;br /&gt;
                depthFirstSearch(e);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void breadthFirstSearch(Employee employee) {&lt;br /&gt;
        /*Check if target item is null - if so quit*/&lt;br /&gt;
        if (employee == null)&lt;br /&gt;
            return;&lt;br /&gt;
        /*Declare a queue using LinkedList and add the target item*/&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        queue.add(employee);&lt;br /&gt;
        /*As long as the queue has data get the first in item .removeFirst*/&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Employee currentFirst = queue.removeFirst();&lt;br /&gt;
            /*If visited move on*/&lt;br /&gt;
            if (currentFirst.mapped) {&lt;br /&gt;
                continue;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*else visit it and print it*/&lt;br /&gt;
                currentFirst.map();&lt;br /&gt;
                System.out.println(currentFirst.id + &amp;quot;: &amp;quot; + currentFirst.firstName + &amp;quot; &amp;quot; + currentFirst.lastName + &amp;quot; - &amp;quot; + currentFirst.jobTitle);&lt;br /&gt;
            }&lt;br /&gt;
            /*Find neighbors of the current item*/&lt;br /&gt;
            LinkedList&amp;lt;Employee&amp;gt; allNeighbors = assignment.get(currentFirst);&lt;br /&gt;
            /*If there are none move on*/&lt;br /&gt;
            if (allNeighbors == null)&lt;br /&gt;
                continue;&lt;br /&gt;
            /*else if there are some and not visited, add them to the queue and the process starts over*/&lt;br /&gt;
            for (Employee e : allNeighbors) {&lt;br /&gt;
                if (!e.mapped)&lt;br /&gt;
                    queue.add(e);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void resetMapping() {&lt;br /&gt;
        for (Employee e : assignment.keySet()) {&lt;br /&gt;
            e.unmap();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Employee a = new Employee(38, &amp;quot;Jimbo&amp;quot;, &amp;quot;Jones&amp;quot;, &amp;quot;President&amp;quot;);&lt;br /&gt;
        Employee b = new Employee(39, &amp;quot;Mike&amp;quot;, &amp;quot;McCobb&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee c = new Employee(43, &amp;quot;Elda&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee d = new Employee(48, &amp;quot;Simon&amp;quot;, &amp;quot;Sneeth&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee e = new Employee(56, &amp;quot;Tim&amp;quot;, &amp;quot;Scott&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee f = new Employee(58, &amp;quot;Bob&amp;quot;, &amp;quot;Tilman&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee g = new Employee(78, &amp;quot;Andrew&amp;quot;, &amp;quot;Cole&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee h = new Employee(83, &amp;quot;Matt&amp;quot;, &amp;quot;Lemon&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee i = new Employee(88, &amp;quot;Chris&amp;quot;, &amp;quot;Lock&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee j = new Employee(71, &amp;quot;Agnes&amp;quot;, &amp;quot;White&amp;quot;, &amp;quot;Accountant&amp;quot;);&lt;br /&gt;
        Employee k = new Employee(61, &amp;quot;George&amp;quot;, &amp;quot;Mills&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee l = new Employee(59, &amp;quot;Thomas&amp;quot;, &amp;quot;Wells&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee m = new Employee(63, &amp;quot;Zip&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee n = new Employee(73, &amp;quot;Rasta&amp;quot;, &amp;quot;Him&amp;quot;, &amp;quot;Technician&amp;quot;);&lt;br /&gt;
        Employee o = new Employee(89, &amp;quot;Claire&amp;quot;, &amp;quot;Collins&amp;quot;, &amp;quot;Supervisor&amp;quot;);&lt;br /&gt;
        Employee p = new Employee(95, &amp;quot;Jim&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee q = new Employee(104, &amp;quot;Tom&amp;quot;, &amp;quot;Flat&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee r = new Employee(64, &amp;quot;Grace&amp;quot;, &amp;quot;Marks&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee s = new Employee(68, &amp;quot;Dan&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee t = new Employee(117, &amp;quot;Shad&amp;quot;, &amp;quot;Fifty&amp;quot;, &amp;quot;Security&amp;quot;);&lt;br /&gt;
        Employee u = new Employee(108, &amp;quot;Tall&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
        Employee v = new Employee(109, &amp;quot;Short&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        Chart chart = new Chart(true);&lt;br /&gt;
        chart.addEdge(a, b);&lt;br /&gt;
        chart.addEdge(a, c);&lt;br /&gt;
        chart.addEdge(a, d);&lt;br /&gt;
        chart.addEdge(b, e);&lt;br /&gt;
        chart.addEdge(b, f);&lt;br /&gt;
        chart.addEdge(e, g);&lt;br /&gt;
        chart.addEdge(e, h);&lt;br /&gt;
        chart.addEdge(e, i);&lt;br /&gt;
        chart.addEdge(f, j);&lt;br /&gt;
        chart.addEdge(c, k);&lt;br /&gt;
        chart.addEdge(c, l);&lt;br /&gt;
        chart.addEdge(c, m);&lt;br /&gt;
        chart.addEdge(l, n);&lt;br /&gt;
        chart.addEdge(k, o);&lt;br /&gt;
        chart.addEdge(o, p);&lt;br /&gt;
        chart.addEdge(o, q);&lt;br /&gt;
        chart.addEdge(d, r);&lt;br /&gt;
        chart.addEdge(d, s);&lt;br /&gt;
        chart.addEdge(s, t);&lt;br /&gt;
        chart.addEdge(r, u);&lt;br /&gt;
        chart.addEdge(r, v);&lt;br /&gt;
        //System.out.println(a.firstName + &amp;quot; &amp;quot; + a.lastName + &amp;quot; &amp;quot; + a.jobTitle + &amp;quot; &amp;quot; + a.id);&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        //chart.depthFirstSearch(k);&lt;br /&gt;
&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        chart.breadthFirstSearch(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Find missing number==&lt;br /&gt;
You are given an array of positive numbers from 1 to n, such that all numbers from 1 to n are present except one number x. You have to find x. The input array is not sorted. Look at the below array and give it a try before checking the solution.&lt;br /&gt;
&lt;br /&gt;
The missing number = a sum of the provided array subtracted from a sum of indices + 2&lt;br /&gt;
example 1, 2, 4 missing is 3 = (1 +2 +3+4) - (1 +2+4)&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
public class MissingNum {&lt;br /&gt;
    public static int findMissing(List&amp;lt;Integer&amp;gt; l) {&lt;br /&gt;
        int tot_prov = 0;&lt;br /&gt;
        for (Integer integer : l) {&lt;br /&gt;
            tot_prov += integer;&lt;br /&gt;
        }&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; k = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;
        int tot_req = 0;&lt;br /&gt;
        for (int i = 0; i &amp;lt; l.size() + 2; i++) {&lt;br /&gt;
            k.add(i);&lt;br /&gt;
            tot_req += k.get(i);&lt;br /&gt;
        }&lt;br /&gt;
        return tot_req - tot_prov;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; g = Arrays.asList(8, 5, 3, 2, 4, 1, 7);&lt;br /&gt;
        System.out.println(&amp;quot;The missing number is &amp;quot; + findMissing(g));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Mergesort==&lt;br /&gt;
public class MergeSort {&lt;br /&gt;
&lt;br /&gt;
    private static Comparable[] aux;&lt;br /&gt;
&lt;br /&gt;
    public static void sort(Comparable[] a) {&lt;br /&gt;
        aux = new Comparable[a.length];&lt;br /&gt;
        sort(a, 0, a.length - 1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void merge(Comparable[] a, int lo, int mid, int hi) {&lt;br /&gt;
        assert isSorted(a, lo, mid);&lt;br /&gt;
        assert isSorted(a, mid + 1, hi);&lt;br /&gt;
        //copy for [] a to [] aux&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            aux[k] = a[k];&lt;br /&gt;
        }&lt;br /&gt;
        // the merging process&lt;br /&gt;
        // i is the first index of the first half of the array&lt;br /&gt;
        // j is the first index of the second half of the array&lt;br /&gt;
        int i = lo, j = mid + 1;&lt;br /&gt;
&lt;br /&gt;
        // for every value of k - the indices of [] a&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            /*Left half exhausted take from the right*/&lt;br /&gt;
            if (i &amp;gt; mid)&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Right half exhausted take from the left*/&lt;br /&gt;
            else if (j &amp;gt; hi)&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
                /*Current key on the right less than current key on the left take from the right*/&lt;br /&gt;
            else if (less(aux[j], aux[i]))&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Current key on the right greater than current key on the left take from the left */&lt;br /&gt;
            else&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
        }&lt;br /&gt;
        assert isSorted(a, lo, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void sort(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        if (hi &amp;lt;= lo)&lt;br /&gt;
            return;&lt;br /&gt;
        int mid = lo + (hi - lo) / 2;&lt;br /&gt;
        sort(a, lo, mid);&lt;br /&gt;
        sort(a, mid + 1, hi);&lt;br /&gt;
        merge(a, lo, mid, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean less(Comparable v, Comparable w) {&lt;br /&gt;
        return v.compareTo(w) &amp;lt; 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean isSorted(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        for (int i = lo + 1; i &amp;lt;= hi; i++)&lt;br /&gt;
            if (less(a[i], a[i - 1])) return false;&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void show(Comparable[] a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length; i++) {&lt;br /&gt;
            //System.out.print(a[i]);&lt;br /&gt;
            System.out.println(a[i]);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        // Comparable[] a = {&amp;quot;E&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;A&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;T&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
        Comparable[] aa = {&amp;quot;A&amp;quot;, &amp;quot;X&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;};&lt;br /&gt;
        Comparable[] bb = {&amp;quot;H&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;J&amp;quot;, &amp;quot;Y&amp;quot;, &amp;quot;Z&amp;quot;};&lt;br /&gt;
        /*Merge the two comparable arrays*/&lt;br /&gt;
        Comparable[] a = new Comparable[aa.length + bb.length];&lt;br /&gt;
        System.arraycopy(aa, 0, a, 0, aa.length);&lt;br /&gt;
        System.arraycopy(bb, 0, a, aa.length, bb.length);&lt;br /&gt;
&lt;br /&gt;
        MergeSort.sort(a);&lt;br /&gt;
        show(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Binary Search==&lt;br /&gt;
public class BinarySearch {&lt;br /&gt;
    public static int find(int[] arr, int target) {&lt;br /&gt;
        int left = 0;&lt;br /&gt;
        int right = arr.length - 1;&lt;br /&gt;
        while (left &amp;lt;= right) {&lt;br /&gt;
            int mid = left + (right - left);&lt;br /&gt;
            if (arr[mid] == target)&lt;br /&gt;
                return mid;&lt;br /&gt;
            if (arr[mid] &amp;lt; target) {&lt;br /&gt;
                left = mid + 1;&lt;br /&gt;
            } else {&lt;br /&gt;
                right = mid - 1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return -1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        int[] f = {1, 10, 20, 47, 59, 63, 75, 88, 99, 107, 120, 133, 155, 162, 176, 188, 199, 200, 210, 222, 223};&lt;br /&gt;
        int t = 162;&lt;br /&gt;
        System.out.println(find(f, t));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Validate Binary Search Tree==&lt;br /&gt;
&lt;br /&gt;
Given a Binary Tree, figure out whether it’s a Binary Search Tree. In a binary search tree, each node’s key value is smaller than the key value of all nodes in the right subtree, and is greater than the key values of all nodes in the left subtree. Below is an example of a binary tree that is a valid BST.&lt;br /&gt;
&lt;br /&gt;
public class BinarySearchTree {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int value) {&lt;br /&gt;
            this.value = value;&lt;br /&gt;
            this.left = null;&lt;br /&gt;
            this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public BinarySearchTree() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    public boolean isbst(Node root, Node l, Node r) {&lt;br /&gt;
        if (root == null)&lt;br /&gt;
            return true;&lt;br /&gt;
        if (l != null &amp;amp;&amp;amp; l.value &amp;gt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        if (r != null &amp;amp;&amp;amp; r.value &amp;lt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        return isbst(root.left, l, root) &amp;amp;&amp;amp; isbst(root.right, root, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        BinarySearchTree bt = new BinarySearchTree();&lt;br /&gt;
        bt.root = new Node(10);&lt;br /&gt;
        bt.root.left = new Node(5);&lt;br /&gt;
        bt.root.right = new Node(15);&lt;br /&gt;
        bt.root.left.left = new Node(4);&lt;br /&gt;
        bt.root.left.right = new Node(7);&lt;br /&gt;
        bt.root.right.left = new Node(13);&lt;br /&gt;
        bt.root.right.right = new Node(26);&lt;br /&gt;
        if (bt.isbst(bt.root, null, null))&lt;br /&gt;
            System.out.println(&amp;quot;Is a BST&amp;quot;);&lt;br /&gt;
        else&lt;br /&gt;
            System.out.println(&amp;quot;Is not a BST&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Determine if two integers add up to given number==&lt;br /&gt;
Given an array of integers and a value, determine if there are any two integers in the array whose sum is equal to the given value. Return true if the sum exists and return false if it does not. Consider this array and the target sums:&lt;br /&gt;
public class SumOfTwo {&lt;br /&gt;
        public static void main(String args[]) {&lt;br /&gt;
            Set&amp;lt;Integer&amp;gt; set = new HashSet&amp;lt;&amp;gt;(); /*Populate this Set with target values*/&lt;br /&gt;
            /*Array of target values*/&lt;br /&gt;
            int[] g = {5, 6, 8, 39, 9, 11, 20, 59, 10, 1};&lt;br /&gt;
            /*Insert the arrays values in the set*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                set.add(g[i]);&lt;br /&gt;
            }&lt;br /&gt;
            /*Set a target number to check for*/&lt;br /&gt;
            int y = 20;&lt;br /&gt;
            /*If there are a set of numbers that would add up, increment this counter*/&lt;br /&gt;
            int counter = 0;&lt;br /&gt;
            /*Pick up a number in the set by turns and assign it to x*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                int x = g[i];&lt;br /&gt;
                /*Check to see if the set contains target minus found number.*/&lt;br /&gt;
                if (set.contains(y - x)) { //if this is true&lt;br /&gt;
                    /*If so, increment the counter by 1*/&lt;br /&gt;
                    counter += 1;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (counter &amp;gt; 0) { /*Some numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            } else { /*No numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are no sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Merge two sorted lists==&lt;br /&gt;
Given two sorted linked lists, merge them so that the resulting linked list is also sorted. Consider two sorted linked lists and the merged list below them as an example.&lt;br /&gt;
import java.util.Stack;&lt;br /&gt;
/*This code merges two ordered lists into one keeping their increasing order&lt;br /&gt;
 * the lists used for testing are in the main function*/&lt;br /&gt;
public class MergeLists {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int data;&lt;br /&gt;
        Node next;&lt;br /&gt;
        Node(int z) {&lt;br /&gt;
            this.data = z;&lt;br /&gt;
            next = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads the values of a list and loads them on a Stack, then reads from the stack*/&lt;br /&gt;
    public static void loadInStack(Node f) {&lt;br /&gt;
        Stack&amp;lt;Integer&amp;gt; pack = new Stack&amp;lt;&amp;gt;();&lt;br /&gt;
        if (f == null)&lt;br /&gt;
            return;&lt;br /&gt;
        pack.push(f.data);&lt;br /&gt;
        loadInStack(f.next);&lt;br /&gt;
        System.out.println(pack);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function duplicates the provided list into another one*/&lt;br /&gt;
    public static void duplicateList(Node m) {&lt;br /&gt;
        Node hold = new Node(-1);&lt;br /&gt;
        if (m == null)&lt;br /&gt;
            return;&lt;br /&gt;
        hold.data = m.data;&lt;br /&gt;
        duplicateList(m.next);&lt;br /&gt;
        System.out.println(hold.data);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads from two lists picking the lesser of*/&lt;br /&gt;
    /*It takes in two lists as variables a and b*/&lt;br /&gt;
    public static void pickTwo(Node a, Node b) {&lt;br /&gt;
        /*This is a dummy list initialized with -1*/&lt;br /&gt;
        Node dummyList = new Node(-1);&lt;br /&gt;
        while (a != null &amp;amp;&amp;amp; b != null) {&lt;br /&gt;
            if (a.data &amp;lt;= b.data) {&lt;br /&gt;
                /*populate the dummy list from a, if smaller*/&lt;br /&gt;
                dummyList.data = a.data;&lt;br /&gt;
                /*Increment a*/&lt;br /&gt;
                a = a.next;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*populate the dummy list from b, if smaller*/&lt;br /&gt;
                dummyList.data = b.data;&lt;br /&gt;
                /*Increment b*/&lt;br /&gt;
                b = b.next;&lt;br /&gt;
            }&lt;br /&gt;
            /*Print when done*/&lt;br /&gt;
            System.out.print(dummyList.data + &amp;quot; -&amp;gt; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Node f = new Node(2);&lt;br /&gt;
        Node g = new Node(7);&lt;br /&gt;
        Node h = new Node(8);&lt;br /&gt;
        Node i = new Node(11);&lt;br /&gt;
&lt;br /&gt;
        f.next = g;&lt;br /&gt;
        g.next = h;&lt;br /&gt;
        h.next = i;&lt;br /&gt;
&lt;br /&gt;
        //printNodes(f);&lt;br /&gt;
&lt;br /&gt;
        Node k = new Node(4);&lt;br /&gt;
        Node l = new Node(6);&lt;br /&gt;
        Node m = new Node(9);&lt;br /&gt;
        Node n = new Node(10);&lt;br /&gt;
        Node o = new Node(12);&lt;br /&gt;
&lt;br /&gt;
        k.next = l;&lt;br /&gt;
        l.next = m;&lt;br /&gt;
        m.next = n;&lt;br /&gt;
        n.next = o;&lt;br /&gt;
&lt;br /&gt;
        //loadInStack(f);&lt;br /&gt;
        //duplicateList(k);&lt;br /&gt;
        pickTwo(f, k);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Reverse String==&lt;br /&gt;
&lt;br /&gt;
Reverse the order of words in a given sentence (an array of characters).&lt;br /&gt;
&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class ReverseString {&lt;br /&gt;
    public static void lizy(String[] curr) {&lt;br /&gt;
        LinkedList&amp;lt;String&amp;gt; y = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        for (int g = 0; g &amp;lt;= curr.length - 1; g++) {&lt;br /&gt;
            y.add(curr[g]);&lt;br /&gt;
        }&lt;br /&gt;
        Iterator i = y.descendingIterator();&lt;br /&gt;
        while (i.hasNext()) {&lt;br /&gt;
            System.out.print(i.next() + &amp;quot; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        String given = &amp;quot;Hello World&amp;quot;;&lt;br /&gt;
        String[] given_array = given.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String lineOfCurrencies = &amp;quot;USD JPY AUD SGD HKD CAD CHF GBP EURO INR&amp;quot;;&lt;br /&gt;
        String multispace = &amp;quot;Kenya    Uganda Tanzania   Burundi     Rwanda&amp;quot;;&lt;br /&gt;
        String[] currencies = lineOfCurrencies.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String[] ms = multispace.split(&amp;quot;\\s+&amp;quot;);&lt;br /&gt;
        ReverseString.lizy(given_array);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Level Order Traversal of Binary Tree==&lt;br /&gt;
&lt;br /&gt;
Given the root of a binary tree, display the node values at each level. Node values for all levels should be displayed on separate lines. Let’s take a look at the below binary tree.&lt;br /&gt;
&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class Lot {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int v) {&lt;br /&gt;
            this.value = v;&lt;br /&gt;
            this.left = this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public Lot() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    void lot() {&lt;br /&gt;
        LinkedList&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        //Queue&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;Node&amp;gt;();&lt;br /&gt;
        queue.add(root);&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Node tempNode = queue.removeFirst();&lt;br /&gt;
            //Node tempNode = queue.poll();&lt;br /&gt;
            System.out.print(tempNode.value + &amp;quot; &amp;quot;);&lt;br /&gt;
            if (tempNode.left != null)&lt;br /&gt;
                queue.add(tempNode.left);&lt;br /&gt;
            if (tempNode.right != null)&lt;br /&gt;
                queue.add(tempNode.right);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Lot l = new Lot();&lt;br /&gt;
        l.root = new Node(100);&lt;br /&gt;
        l.root.left = new Node(50);&lt;br /&gt;
        l.root.right = new Node(200);&lt;br /&gt;
        l.root.left.left = new Node(25);&lt;br /&gt;
        l.root.left.right = new Node(75);&lt;br /&gt;
        l.root.right.right = new Node(350);&lt;br /&gt;
        System.out.println(&amp;quot;Level order traversal is as follows: &amp;quot;);&lt;br /&gt;
        l.lot();&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
	<entry>
		<id>https://allangitobu.com/index.php?title=Algorithms&amp;diff=142</id>
		<title>Algorithms</title>
		<link rel="alternate" type="text/html" href="https://allangitobu.com/index.php?title=Algorithms&amp;diff=142"/>
		<updated>2022-10-24T19:54:40Z</updated>

		<summary type="html">&lt;p&gt;Leksy: /* Level Order Traversal of Binary Tree */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Java Graph Implementation with Search Methods==&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class Chart {&lt;br /&gt;
    static class Employee {&lt;br /&gt;
        int id;&lt;br /&gt;
        String firstName;&lt;br /&gt;
        String lastName;&lt;br /&gt;
        String jobTitle;&lt;br /&gt;
        boolean mapped;&lt;br /&gt;
&lt;br /&gt;
        Employee(int id, String fn, String ln, String jt) {&lt;br /&gt;
            this.id = id;&lt;br /&gt;
            this.jobTitle = jt;&lt;br /&gt;
            this.firstName = fn;&lt;br /&gt;
            this.lastName = ln;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void map() {&lt;br /&gt;
            mapped = true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        void unmap() {&lt;br /&gt;
            mapped = false;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private final HashMap&amp;lt;Employee, LinkedList&amp;lt;Employee&amp;gt;&amp;gt; assignment;&lt;br /&gt;
&lt;br /&gt;
    public Chart(boolean directed) {&lt;br /&gt;
        assignment = new HashMap&amp;lt;&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdgeHelper(Employee a, Employee b) {&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; e = assignment.get(a);&lt;br /&gt;
        if (e != null) {&lt;br /&gt;
            assignment.remove(b);&lt;br /&gt;
        } else&lt;br /&gt;
            e = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        e.add(b);&lt;br /&gt;
        assignment.put(a, e);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addEdge(Employee boss, Employee subordinate) {&lt;br /&gt;
        if (!assignment.containsKey(boss))&lt;br /&gt;
            assignment.put(boss, null);&lt;br /&gt;
        if (!assignment.containsKey(subordinate))&lt;br /&gt;
            assignment.put(subordinate, null);&lt;br /&gt;
        addEdgeHelper(boss, subordinate);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void depthFirstSearch(Employee employee) {&lt;br /&gt;
        employee.map();&lt;br /&gt;
        System.out.println(employee.firstName + &amp;quot; &amp;quot; + employee.lastName + &amp;quot; is a &amp;quot; + employee.jobTitle);&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; neighbors = assignment.get(employee);&lt;br /&gt;
        if (neighbors == null)&lt;br /&gt;
            return;&lt;br /&gt;
        for (Employee e : neighbors) {&lt;br /&gt;
            if (!e.mapped)&lt;br /&gt;
                depthFirstSearch(e);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void breadthFirstSearch(Employee employee) {&lt;br /&gt;
        /*Check if target item is null - if so quit*/&lt;br /&gt;
        if (employee == null)&lt;br /&gt;
            return;&lt;br /&gt;
        /*Declare a queue using LinkedList and add the target item*/&lt;br /&gt;
        LinkedList&amp;lt;Employee&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        queue.add(employee);&lt;br /&gt;
        /*As long as the queue has data get the first in item .removeFirst*/&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Employee currentFirst = queue.removeFirst();&lt;br /&gt;
            /*If visited move on*/&lt;br /&gt;
            if (currentFirst.mapped) {&lt;br /&gt;
                continue;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*else visit it and print it*/&lt;br /&gt;
                currentFirst.map();&lt;br /&gt;
                System.out.println(currentFirst.id + &amp;quot;: &amp;quot; + currentFirst.firstName + &amp;quot; &amp;quot; + currentFirst.lastName + &amp;quot; - &amp;quot; + currentFirst.jobTitle);&lt;br /&gt;
            }&lt;br /&gt;
            /*Find neighbors of the current item*/&lt;br /&gt;
            LinkedList&amp;lt;Employee&amp;gt; allNeighbors = assignment.get(currentFirst);&lt;br /&gt;
            /*If there are none move on*/&lt;br /&gt;
            if (allNeighbors == null)&lt;br /&gt;
                continue;&lt;br /&gt;
            /*else if there are some and not visited, add them to the queue and the process starts over*/&lt;br /&gt;
            for (Employee e : allNeighbors) {&lt;br /&gt;
                if (!e.mapped)&lt;br /&gt;
                    queue.add(e);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void resetMapping() {&lt;br /&gt;
        for (Employee e : assignment.keySet()) {&lt;br /&gt;
            e.unmap();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Employee a = new Employee(38, &amp;quot;Jimbo&amp;quot;, &amp;quot;Jones&amp;quot;, &amp;quot;President&amp;quot;);&lt;br /&gt;
        Employee b = new Employee(39, &amp;quot;Mike&amp;quot;, &amp;quot;McCobb&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee c = new Employee(43, &amp;quot;Elda&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee d = new Employee(48, &amp;quot;Simon&amp;quot;, &amp;quot;Sneeth&amp;quot;, &amp;quot;VP&amp;quot;);&lt;br /&gt;
        Employee e = new Employee(56, &amp;quot;Tim&amp;quot;, &amp;quot;Scott&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee f = new Employee(58, &amp;quot;Bob&amp;quot;, &amp;quot;Tilman&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee g = new Employee(78, &amp;quot;Andrew&amp;quot;, &amp;quot;Cole&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee h = new Employee(83, &amp;quot;Matt&amp;quot;, &amp;quot;Lemon&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee i = new Employee(88, &amp;quot;Chris&amp;quot;, &amp;quot;Lock&amp;quot;, &amp;quot;Analyst&amp;quot;);&lt;br /&gt;
        Employee j = new Employee(71, &amp;quot;Agnes&amp;quot;, &amp;quot;White&amp;quot;, &amp;quot;Accountant&amp;quot;);&lt;br /&gt;
        Employee k = new Employee(61, &amp;quot;George&amp;quot;, &amp;quot;Mills&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee l = new Employee(59, &amp;quot;Thomas&amp;quot;, &amp;quot;Wells&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee m = new Employee(63, &amp;quot;Zip&amp;quot;, &amp;quot;Two&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee n = new Employee(73, &amp;quot;Rasta&amp;quot;, &amp;quot;Him&amp;quot;, &amp;quot;Technician&amp;quot;);&lt;br /&gt;
        Employee o = new Employee(89, &amp;quot;Claire&amp;quot;, &amp;quot;Collins&amp;quot;, &amp;quot;Supervisor&amp;quot;);&lt;br /&gt;
        Employee p = new Employee(95, &amp;quot;Jim&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee q = new Employee(104, &amp;quot;Tom&amp;quot;, &amp;quot;Flat&amp;quot;, &amp;quot;Receptionist&amp;quot;);&lt;br /&gt;
        Employee r = new Employee(64, &amp;quot;Grace&amp;quot;, &amp;quot;Marks&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee s = new Employee(68, &amp;quot;Dan&amp;quot;, &amp;quot;Four&amp;quot;, &amp;quot;Manager&amp;quot;);&lt;br /&gt;
        Employee t = new Employee(117, &amp;quot;Shad&amp;quot;, &amp;quot;Fifty&amp;quot;, &amp;quot;Security&amp;quot;);&lt;br /&gt;
        Employee u = new Employee(108, &amp;quot;Tall&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
        Employee v = new Employee(109, &amp;quot;Short&amp;quot;, &amp;quot;Nephew&amp;quot;, &amp;quot;Legal&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        Chart chart = new Chart(true);&lt;br /&gt;
        chart.addEdge(a, b);&lt;br /&gt;
        chart.addEdge(a, c);&lt;br /&gt;
        chart.addEdge(a, d);&lt;br /&gt;
        chart.addEdge(b, e);&lt;br /&gt;
        chart.addEdge(b, f);&lt;br /&gt;
        chart.addEdge(e, g);&lt;br /&gt;
        chart.addEdge(e, h);&lt;br /&gt;
        chart.addEdge(e, i);&lt;br /&gt;
        chart.addEdge(f, j);&lt;br /&gt;
        chart.addEdge(c, k);&lt;br /&gt;
        chart.addEdge(c, l);&lt;br /&gt;
        chart.addEdge(c, m);&lt;br /&gt;
        chart.addEdge(l, n);&lt;br /&gt;
        chart.addEdge(k, o);&lt;br /&gt;
        chart.addEdge(o, p);&lt;br /&gt;
        chart.addEdge(o, q);&lt;br /&gt;
        chart.addEdge(d, r);&lt;br /&gt;
        chart.addEdge(d, s);&lt;br /&gt;
        chart.addEdge(s, t);&lt;br /&gt;
        chart.addEdge(r, u);&lt;br /&gt;
        chart.addEdge(r, v);&lt;br /&gt;
        //System.out.println(a.firstName + &amp;quot; &amp;quot; + a.lastName + &amp;quot; &amp;quot; + a.jobTitle + &amp;quot; &amp;quot; + a.id);&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        //chart.depthFirstSearch(k);&lt;br /&gt;
&lt;br /&gt;
        chart.resetMapping();&lt;br /&gt;
        chart.breadthFirstSearch(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Find missing number==&lt;br /&gt;
You are given an array of positive numbers from 1 to n, such that all numbers from 1 to n are present except one number x. You have to find x. The input array is not sorted. Look at the below array and give it a try before checking the solution.&lt;br /&gt;
&lt;br /&gt;
The missing number = a sum of the provided array subtracted from a sum of indices + 2&lt;br /&gt;
example 1, 2, 4 missing is 3 = (1 +2 +3+4) - (1 +2+4)&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
public class MissingNum {&lt;br /&gt;
    public static int findMissing(List&amp;lt;Integer&amp;gt; l) {&lt;br /&gt;
        int tot_prov = 0;&lt;br /&gt;
        for (Integer integer : l) {&lt;br /&gt;
            tot_prov += integer;&lt;br /&gt;
        }&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; k = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;
        int tot_req = 0;&lt;br /&gt;
        for (int i = 0; i &amp;lt; l.size() + 2; i++) {&lt;br /&gt;
            k.add(i);&lt;br /&gt;
            tot_req += k.get(i);&lt;br /&gt;
        }&lt;br /&gt;
        return tot_req - tot_prov;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        List&amp;lt;Integer&amp;gt; g = Arrays.asList(8, 5, 3, 2, 4, 1, 7);&lt;br /&gt;
        System.out.println(&amp;quot;The missing number is &amp;quot; + findMissing(g));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Mergesort==&lt;br /&gt;
public class MergeSort {&lt;br /&gt;
&lt;br /&gt;
    private static Comparable[] aux;&lt;br /&gt;
&lt;br /&gt;
    public static void sort(Comparable[] a) {&lt;br /&gt;
        aux = new Comparable[a.length];&lt;br /&gt;
        sort(a, 0, a.length - 1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void merge(Comparable[] a, int lo, int mid, int hi) {&lt;br /&gt;
        assert isSorted(a, lo, mid);&lt;br /&gt;
        assert isSorted(a, mid + 1, hi);&lt;br /&gt;
        //copy for [] a to [] aux&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            aux[k] = a[k];&lt;br /&gt;
        }&lt;br /&gt;
        // the merging process&lt;br /&gt;
        // i is the first index of the first half of the array&lt;br /&gt;
        // j is the first index of the second half of the array&lt;br /&gt;
        int i = lo, j = mid + 1;&lt;br /&gt;
&lt;br /&gt;
        // for every value of k - the indices of [] a&lt;br /&gt;
        for (int k = lo; k &amp;lt;= hi; k++) {&lt;br /&gt;
            /*Left half exhausted take from the right*/&lt;br /&gt;
            if (i &amp;gt; mid)&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Right half exhausted take from the left*/&lt;br /&gt;
            else if (j &amp;gt; hi)&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
                /*Current key on the right less than current key on the left take from the right*/&lt;br /&gt;
            else if (less(aux[j], aux[i]))&lt;br /&gt;
                a[k] = aux[j++];&lt;br /&gt;
                /*Current key on the right greater than current key on the left take from the left */&lt;br /&gt;
            else&lt;br /&gt;
                a[k] = aux[i++];&lt;br /&gt;
        }&lt;br /&gt;
        assert isSorted(a, lo, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static void sort(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        if (hi &amp;lt;= lo)&lt;br /&gt;
            return;&lt;br /&gt;
        int mid = lo + (hi - lo) / 2;&lt;br /&gt;
        sort(a, lo, mid);&lt;br /&gt;
        sort(a, mid + 1, hi);&lt;br /&gt;
        merge(a, lo, mid, hi);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean less(Comparable v, Comparable w) {&lt;br /&gt;
        return v.compareTo(w) &amp;lt; 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static boolean isSorted(Comparable[] a, int lo, int hi) {&lt;br /&gt;
        for (int i = lo + 1; i &amp;lt;= hi; i++)&lt;br /&gt;
            if (less(a[i], a[i - 1])) return false;&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void show(Comparable[] a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length; i++) {&lt;br /&gt;
            //System.out.print(a[i]);&lt;br /&gt;
            System.out.println(a[i]);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        // Comparable[] a = {&amp;quot;E&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;A&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;R&amp;quot;, &amp;quot;T&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
        Comparable[] aa = {&amp;quot;A&amp;quot;, &amp;quot;X&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;R&amp;quot;};&lt;br /&gt;
        Comparable[] bb = {&amp;quot;H&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;J&amp;quot;, &amp;quot;Y&amp;quot;, &amp;quot;Z&amp;quot;};&lt;br /&gt;
        /*Merge the two comparable arrays*/&lt;br /&gt;
        Comparable[] a = new Comparable[aa.length + bb.length];&lt;br /&gt;
        System.arraycopy(aa, 0, a, 0, aa.length);&lt;br /&gt;
        System.arraycopy(bb, 0, a, aa.length, bb.length);&lt;br /&gt;
&lt;br /&gt;
        MergeSort.sort(a);&lt;br /&gt;
        show(a);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Binary Search==&lt;br /&gt;
public class BinarySearch {&lt;br /&gt;
    public static int find(int[] arr, int target) {&lt;br /&gt;
        int left = 0;&lt;br /&gt;
        int right = arr.length - 1;&lt;br /&gt;
        while (left &amp;lt;= right) {&lt;br /&gt;
            int mid = left + (right - left);&lt;br /&gt;
            if (arr[mid] == target)&lt;br /&gt;
                return mid;&lt;br /&gt;
            if (arr[mid] &amp;lt; target) {&lt;br /&gt;
                left = mid + 1;&lt;br /&gt;
            } else {&lt;br /&gt;
                right = mid - 1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return -1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        int[] f = {1, 10, 20, 47, 59, 63, 75, 88, 99, 107, 120, 133, 155, 162, 176, 188, 199, 200, 210, 222, 223};&lt;br /&gt;
        int t = 162;&lt;br /&gt;
        System.out.println(find(f, t));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Validate Binary Search Tree==&lt;br /&gt;
&lt;br /&gt;
Given a Binary Tree, figure out whether it’s a Binary Search Tree. In a binary search tree, each node’s key value is smaller than the key value of all nodes in the right subtree, and is greater than the key values of all nodes in the left subtree. Below is an example of a binary tree that is a valid BST.&lt;br /&gt;
&lt;br /&gt;
public class BinarySearchTree {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
        Node(int value) {&lt;br /&gt;
            this.value = value;&lt;br /&gt;
            this.left = null;&lt;br /&gt;
            this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public BinarySearchTree() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    public boolean isbst(Node root, Node l, Node r) {&lt;br /&gt;
        if (root == null)&lt;br /&gt;
            return true;&lt;br /&gt;
        if (l != null &amp;amp;&amp;amp; l.value &amp;gt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        if (r != null &amp;amp;&amp;amp; r.value &amp;lt; root.value)&lt;br /&gt;
            return false;&lt;br /&gt;
        return isbst(root.left, l, root) &amp;amp;&amp;amp; isbst(root.right, root, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        BinarySearchTree bt = new BinarySearchTree();&lt;br /&gt;
        bt.root = new Node(10);&lt;br /&gt;
        bt.root.left = new Node(5);&lt;br /&gt;
        bt.root.right = new Node(15);&lt;br /&gt;
        bt.root.left.left = new Node(4);&lt;br /&gt;
        bt.root.left.right = new Node(7);&lt;br /&gt;
        bt.root.right.left = new Node(13);&lt;br /&gt;
        bt.root.right.right = new Node(26);&lt;br /&gt;
        if (bt.isbst(bt.root, null, null))&lt;br /&gt;
            System.out.println(&amp;quot;Is a BST&amp;quot;);&lt;br /&gt;
        else&lt;br /&gt;
            System.out.println(&amp;quot;Is not a BST&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Determine if two integers add up to given number==&lt;br /&gt;
Given an array of integers and a value, determine if there are any two integers in the array whose sum is equal to the given value. Return true if the sum exists and return false if it does not. Consider this array and the target sums:&lt;br /&gt;
public class SumOfTwo {&lt;br /&gt;
        public static void main(String args[]) {&lt;br /&gt;
            Set&amp;lt;Integer&amp;gt; set = new HashSet&amp;lt;&amp;gt;(); /*Populate this Set with target values*/&lt;br /&gt;
            /*Array of target values*/&lt;br /&gt;
            int[] g = {5, 6, 8, 39, 9, 11, 20, 59, 10, 1};&lt;br /&gt;
            /*Insert the arrays values in the set*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                set.add(g[i]);&lt;br /&gt;
            }&lt;br /&gt;
            /*Set a target number to check for*/&lt;br /&gt;
            int y = 20;&lt;br /&gt;
            /*If there are a set of numbers that would add up, increment this counter*/&lt;br /&gt;
            int counter = 0;&lt;br /&gt;
            /*Pick up a number in the set by turns and assign it to x*/&lt;br /&gt;
            for (int i = 0; i &amp;lt; g.length; i++) {&lt;br /&gt;
                int x = g[i];&lt;br /&gt;
                /*Check to see if the set contains target minus found number.*/&lt;br /&gt;
                if (set.contains(y - x)) { //if this is true&lt;br /&gt;
                    /*If so, increment the counter by 1*/&lt;br /&gt;
                    counter += 1;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (counter &amp;gt; 0) { /*Some numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            } else { /*No numbers add up*/&lt;br /&gt;
                System.out.println(&amp;quot;There are no sets of numbers that add up to &amp;quot; + y);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Merge two sorted lists==&lt;br /&gt;
Given two sorted linked lists, merge them so that the resulting linked list is also sorted. Consider two sorted linked lists and the merged list below them as an example.&lt;br /&gt;
import java.util.Stack;&lt;br /&gt;
/*This code merges two ordered lists into one keeping their increasing order&lt;br /&gt;
 * the lists used for testing are in the main function*/&lt;br /&gt;
public class MergeLists {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int data;&lt;br /&gt;
        Node next;&lt;br /&gt;
        Node(int z) {&lt;br /&gt;
            this.data = z;&lt;br /&gt;
            next = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads the values of a list and loads them on a Stack, then reads from the stack*/&lt;br /&gt;
    public static void loadInStack(Node f) {&lt;br /&gt;
        Stack&amp;lt;Integer&amp;gt; pack = new Stack&amp;lt;&amp;gt;();&lt;br /&gt;
        if (f == null)&lt;br /&gt;
            return;&lt;br /&gt;
        pack.push(f.data);&lt;br /&gt;
        loadInStack(f.next);&lt;br /&gt;
        System.out.println(pack);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function duplicates the provided list into another one*/&lt;br /&gt;
    public static void duplicateList(Node m) {&lt;br /&gt;
        Node hold = new Node(-1);&lt;br /&gt;
        if (m == null)&lt;br /&gt;
            return;&lt;br /&gt;
        hold.data = m.data;&lt;br /&gt;
        duplicateList(m.next);&lt;br /&gt;
        System.out.println(hold.data);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*This function reads from two lists picking the lesser of*/&lt;br /&gt;
    /*It takes in two lists as variables a and b*/&lt;br /&gt;
    public static void pickTwo(Node a, Node b) {&lt;br /&gt;
        /*This is a dummy list initialized with -1*/&lt;br /&gt;
        Node dummyList = new Node(-1);&lt;br /&gt;
        while (a != null &amp;amp;&amp;amp; b != null) {&lt;br /&gt;
            if (a.data &amp;lt;= b.data) {&lt;br /&gt;
                /*populate the dummy list from a, if smaller*/&lt;br /&gt;
                dummyList.data = a.data;&lt;br /&gt;
                /*Increment a*/&lt;br /&gt;
                a = a.next;&lt;br /&gt;
            } else {&lt;br /&gt;
                /*populate the dummy list from b, if smaller*/&lt;br /&gt;
                dummyList.data = b.data;&lt;br /&gt;
                /*Increment b*/&lt;br /&gt;
                b = b.next;&lt;br /&gt;
            }&lt;br /&gt;
            /*Print when done*/&lt;br /&gt;
            System.out.print(dummyList.data + &amp;quot; -&amp;gt; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Node f = new Node(2);&lt;br /&gt;
        Node g = new Node(7);&lt;br /&gt;
        Node h = new Node(8);&lt;br /&gt;
        Node i = new Node(11);&lt;br /&gt;
&lt;br /&gt;
        f.next = g;&lt;br /&gt;
        g.next = h;&lt;br /&gt;
        h.next = i;&lt;br /&gt;
&lt;br /&gt;
        //printNodes(f);&lt;br /&gt;
&lt;br /&gt;
        Node k = new Node(4);&lt;br /&gt;
        Node l = new Node(6);&lt;br /&gt;
        Node m = new Node(9);&lt;br /&gt;
        Node n = new Node(10);&lt;br /&gt;
        Node o = new Node(12);&lt;br /&gt;
&lt;br /&gt;
        k.next = l;&lt;br /&gt;
        l.next = m;&lt;br /&gt;
        m.next = n;&lt;br /&gt;
        n.next = o;&lt;br /&gt;
&lt;br /&gt;
        //loadInStack(f);&lt;br /&gt;
        //duplicateList(k);&lt;br /&gt;
        pickTwo(f, k);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Reverse String==&lt;br /&gt;
&lt;br /&gt;
Reverse the order of words in a given sentence (an array of characters).&lt;br /&gt;
&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class ReverseString {&lt;br /&gt;
    public static void lizy(String[] curr) {&lt;br /&gt;
        LinkedList&amp;lt;String&amp;gt; y = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        for (int g = 0; g &amp;lt;= curr.length - 1; g++) {&lt;br /&gt;
            y.add(curr[g]);&lt;br /&gt;
        }&lt;br /&gt;
        Iterator i = y.descendingIterator();&lt;br /&gt;
        while (i.hasNext()) {&lt;br /&gt;
            System.out.print(i.next() + &amp;quot; &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        String given = &amp;quot;Hello World&amp;quot;;&lt;br /&gt;
        String[] given_array = given.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String lineOfCurrencies = &amp;quot;USD JPY AUD SGD HKD CAD CHF GBP EURO INR&amp;quot;;&lt;br /&gt;
        String multispace = &amp;quot;Kenya    Uganda Tanzania   Burundi     Rwanda&amp;quot;;&lt;br /&gt;
        String[] currencies = lineOfCurrencies.split(&amp;quot; &amp;quot;);&lt;br /&gt;
        String[] ms = multispace.split(&amp;quot;\\s+&amp;quot;);&lt;br /&gt;
        ReverseString.lizy(given_array);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
==Level Order Traversal of Binary Tree==&lt;br /&gt;
&lt;br /&gt;
Given the root of a binary tree, display the node values at each level. Node values for all levels should be displayed on separate lines. Let’s take a look at the below binary tree.&lt;br /&gt;
&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
public class Lot {&lt;br /&gt;
    static class Node {&lt;br /&gt;
        int value;&lt;br /&gt;
        Node left;&lt;br /&gt;
        Node right;&lt;br /&gt;
&lt;br /&gt;
        Node(int v) {&lt;br /&gt;
            this.value = v;&lt;br /&gt;
            this.left = this.right = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    Node root;&lt;br /&gt;
    public Lot() {&lt;br /&gt;
        root = null;&lt;br /&gt;
    }&lt;br /&gt;
    void lot() {&lt;br /&gt;
        LinkedList&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
        //Queue&amp;lt;Node&amp;gt; queue = new LinkedList&amp;lt;Node&amp;gt;();&lt;br /&gt;
        queue.add(root);&lt;br /&gt;
        while (!queue.isEmpty()) {&lt;br /&gt;
            Node tempNode = queue.removeFirst();&lt;br /&gt;
            //Node tempNode = queue.poll();&lt;br /&gt;
            System.out.print(tempNode.value + &amp;quot; &amp;quot;);&lt;br /&gt;
            if (tempNode.left != null)&lt;br /&gt;
                queue.add(tempNode.left);&lt;br /&gt;
            if (tempNode.right != null)&lt;br /&gt;
                queue.add(tempNode.right);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Lot l = new Lot();&lt;br /&gt;
        l.root = new Node(100);&lt;br /&gt;
        l.root.left = new Node(50);&lt;br /&gt;
        l.root.right = new Node(200);&lt;br /&gt;
        l.root.left.left = new Node(25);&lt;br /&gt;
        l.root.left.right = new Node(75);&lt;br /&gt;
        l.root.right.right = new Node(350);&lt;br /&gt;
        System.out.println(&amp;quot;Level order traversal is as follows: &amp;quot;);&lt;br /&gt;
        l.lot();&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Leksy</name></author>
		
	</entry>
</feed>