Skip to main content

SQL Journey: Blog #6

In this blog, I will be explaining what I understand about "outer join". Based on the given lecture, it means that it is a method of joining the specific data from two related tables EVEN if there are missing or incomplete entries in one of the two related tables. It is different from an inner join since an inner join will only display the rows if there is a match between the common identifiers i.e. student_id. According to w3schools, it can be best visualize using the following Venn diagrams.



Different Types of SQL JOINs

Here are the different types of the JOINs in SQL:
(INNER) JOIN: Returns records that have matching values in both tables
LEFT (OUTER) JOIN: Returns all records from the left table, and the matched records from the right table
RIGHT (OUTER) JOIN: Returns all records from the right table, and the matched records from the left table
FULL (OUTER) JOIN: Returns all records when there is a match in either left or right table

Here is the next challenge entitled, "Customer's Orders" and the given data:

CREATE TABLE customers (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT,
    email TEXT);
    
INSERT INTO customers (name, email) VALUES ("Doctor Who", "doctorwho@timelords.com");
INSERT INTO customers (name, email) VALUES ("Harry Potter", "harry@potter.com");
INSERT INTO customers (name, email) VALUES ("Captain Awesome", "captain@awesome.com");

CREATE TABLE orders (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    customer_id INTEGER,
    item TEXT,
    price REAL);

INSERT INTO orders (customer_id, item, price)
    VALUES (1, "Sonic Screwdriver", 1000.00);
INSERT INTO orders (customer_id, item, price)
    VALUES (2, "High Quality Broomstick", 40.00);
INSERT INTO orders (customer_id, item, price)
    VALUES (1, "TARDIS", 1000000.00);

Step 1

We've created a database for customers and their orders. Not all of the customers have made orders, however. Come up with a query that lists the name and email of every customer followed by the item and price of orders they've made. Use a LEFT OUTER JOIN so that a customer is listed even if they've made no orders, and don't add any ORDER BY.

Code:
SELECT customers.name, customers.email,orders.item, orders. Price FROM customers LEFT OUTER JOIN orders ON customers.id = orders.customer_id;

Query Results:

nameemailitemprice
Doctor Whodoctorwho@timelords.comSonic Screwdriver1000
Doctor Whodoctorwho@timelords.comTARDIS1000000
Harry Potterharry@potter.comHigh Quality Broomstick40
Captain Awesomecaptain@awesome.comNULLNULL

Step 2

Now, create another query that will result in one row per each customer, with their name, email, and total amount of money they've spent on orders. Sort the rows according to the total money spent, from the most spent to the least spent.
(Tip: You should always GROUP BY on the column that is most likely to be unique in a row.)

Code:

SELECT customers.name, customers.email, SUM(orders.price) FROM customers LEFT OUTER JOIN orders ON customers.id = orders.customer_id GROUP BY customers.id ORDER BY SUM(orders.price) DESC;

Query Results:

nameemailSUM(orders.price)
Doctor Whodoctorwho@timelords.com1001000
Harry Potterharry@potter.com40
Captain Awesomecaptain@awesome.comNULL

Reference:
Retrieved from https://www.w3schools.com/sql/sql_join.asp#:~:text=(INNER)%20JOIN%20%3A%20Returns%20records,records%20from%20the%20left%20table on 22 August 2023 at 3:47AM PST

Comments

Popular posts from this blog

Privacy Policy of ShinStats: descriptives calc

Privacy Policy Shin Nix built the ShinStats app as an Ad Supported app. This SERVICE is provided by Shin Nix at no cost and is intended for use as is. This page is used to inform visitors regarding my policies with the collection, use, and disclosure of Personal Information if anyone decided to use my Service. If you choose to use my Service, then you agree to the collection and use of information in relation to this policy. The Personal Information that I collect is used for providing and improving the Service. I will not use or share your information with anyone except as described in this Privacy Policy. The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which are accessible at ShinStats unless otherwise defined in this Privacy Policy. Information Collection and Use For a better experience, while using our Service, I may require you to provide us with certain personally identifiable information. The information that I request will be retaine...

SQL Journey: Blog#10

So far, we are only "reading" from a given database or table using the SELECT command of SQL. In today's lesson, we will now start "writing" into a given database using the UPDATE and DELETE commands. Challenge: Dynamic Documents Given data: CREATE table documents (     id INTEGER PRIMARY KEY AUTOINCREMENT,     title TEXT,     content TEXT,     author TEXT);      INSERT INTO documents (author, title, content)     VALUES ("Puff T.M. Dragon", "Fancy Stuff", "Ceiling wax, dragon wings, etc."); INSERT INTO documents (author, title, content)     VALUES ("Puff T.M. Dragon", "Living Things", "They're located in the left ear, you know."); INSERT INTO documents (author, title, content)     VALUES ("Jackie Paper", "Pirate Recipes", "Cherry pie, apple pie, blueberry pie."); INSERT INTO documents (author, title, content)     VALUES ("Jackie Paper", "Boat Supplies...

SQL Journey: Blog #14

I am now on what Alex the Analyst would call the advanced SQL queries. First off, the Common Table Expression or CTEs. Based on what I understood in the video, CTEs is similar to a function or class in Python which you can call out. It is just how I felt when I first encountered this expression. Now, in this particular case, I tried to replicate what Alex is doing but also not copying the codes that he is using. I am just simply trying to understand what the expression that was used (which starts with WITH) and then observe how he used the said expression. This was my code. Now this code, resulted in the following error. Msg 8156, Level 16, State 1, Line 84 The column 'EmployeeID' was specified multiple times for 'CTE_Employee'. What does someone do in this day and age if we encounter something that bogs us down? We go to the internet especially to AI tools to aid us out. And, apparently, these tools will really come in handy. It stated that the error occurred because I...