Hi everyone, Kevin here. Today we are going to walk through step-by-step how you can use SQL or SQL for data reporting and analysis. I'm going to assume you have absolutely no background in SQL and we're also going to use all free tools, so there's really no barrier to learning. By the end of this video, my goal is that you will know how to retrieve data from databases. And if you stick around until the end, I will also share a really neat trick that helps you write some of the most complex queries with very little effort.
So first off, why would you even want to learn SQL? I mean, there are so many other videos that you could be watching on YouTube. Well, all businesses keep track of data in databases. And when I worked at Microsoft as a product manager, I used SQL all the time to get insights from data. I worked on the website office.com and I could write a SQL query to tell me how many people clicked on this button and I could use that data then to decide well should we make this button stand out a little bit more?
Should we move it to a different location? Without being able to get that data using SQL I would have had no idea what to do. Your data contains all sorts of hidden insights and with SQL you can unlock some of that hidden value. In this video, we're going to focus on how you can retrieve data from databases.
This is really perfect if say you're a business analyst or a product manager or maybe you're a researcher. We're not going to focus on how you can create a new database or how you could add new tables or even how you can add or remove data. If that's something you want to see in a future video, let me know down below in the comments. What is SQL?
Well, SQL stands for Structured Query Language or SQL. It's a language that you can use to interact with databases. You can retrieve data, you can filter, you can sort, you can add, update, and remove data from a database. The great thing is that anyone can learn how to write SQL queries. You definitely do not need a degree in computer science.
and once you learn SQL this will be another superpower that you have in your toolbox at work. So what is even a database? A database is a collection of tables and those tables have relationships and don't worry if that sounds confusing. We're going to make it real coming up shortly with an example. If you look at any major website whether it's Facebook, Twitter, LinkedIn, All of those are powered by databases.
Even here at the Kevin Cookie Company, we use databases. We track our customers, our orders, and all of our product information. What?
You thought we just wrote all that down by hand on paper? We recently transitioned over to databases. To interface with a database, we are going to use something called an RDBMS. A what? Well, that stands for relational database management system.
I know they get kind of crazy with their acronyms. You have a lot of very popular options and you've probably even heard of some of these before. You have Oracle, PostgreSQL, Microsoft SQL Server, MySQL as just a few of the many options.
In this video we are going to use Microsoft SQL Server and the reason why is well, first off, I'm a Microsoft boy so I'm a little biased. but also it happens to be one of the most popular options and when you're learning the tools are completely free. Also once you learn one RDBMS, there's that acronym again, you'll be able to easily pick up any other system.
You'll know the essentials of SQL and there may be some slight syntax differences or the way the code's written, but you'll understand all of the core concepts. To get started we're going to use Microsoft SQL Server. and you can download that at the following website.
You'll find the link up above and I've also included a link down below in the description. On this website if you scroll down just a little bit we have two different editions that we can choose from, and for this tutorial either one will work. You can get either the developer edition or the express edition, but what is the difference and why should you choose one versus the other? The express version can be used for business purposes, but it's a little bit more limited. You don't have the full functionality.
Your database can only be up to 10 gigabytes in size and it only supports four cores. But once again for this tutorial that's totally fine. Then you also have the developer version and this cannot be used for business purposes.
It has full functionality, but once again it can only be used for development and testing purposes. For this tutorial I'm going to download the developer edition, but once again you can choose either one. When you kick off the install you'll see a prompt that looks like this, and you have three different options.
You can proceed with basic and this is what I'm going to do. but you could also choose custom where you get to choose what components are installed. You also have the option that says download media. This is if say you want to install SQL Server on multiple machines, you can simply download the installation media and then you could use it elsewhere so you don't have to re-download. Let's continue by clicking on basic.
Once you finish installing, you won't see any icons on your taskbar or on your desktop, and you might be wondering well what did I install and is it even running? Let's click on the start menu and then click on all apps, and here let's navigate down to M, and right here I see that I've now installed Microsoft SQL Server 2019. When I drop this down we have a few different apps. Let's click on the one titled configuration manager.
This opens up the configuration manager, and we're not going to make any changes here, but I want to show you that the service is running. Here we can see that SQL Server is currently running. Right up here we can stop it if we want to.
We could also restart it, you could pause it, and if it were stopped here we could start the service again. Right over here we can also see the start mode and it's currently set to automatic. This means that anytime you boot your PC the SQL Server instance will automatically start up, but once again we simply open this just to confirm that SQL Server is currently running. We can now close this out.
Now that we have our server running and our database engine in place, we also need a graphical front end that will allow us to write queries against our database, and for that we are going to use a tool called SQL Server Management Studio, or what's also referred to as SSMS. Head to the following website. I've included a link up above, and you'll also find it down below in the description.
Scroll down just a little bit and here you'll see a link that says free download for SQL Server Management Studio. Click on that and then run through the install process. Once you finish installing SQL Server Management Studio, launch the app and you should see an interface that looks like this. A prompt should also appear asking you to connect to a server.
The first item we installed provided us with the server, and now this second item that we installed will allow us to connect to that server. Right here for the server name, it should be your PC's name. but if you don't see anything pre-populated in here, you can click on this drop down and then click on browse for more.
Expand the database engine category, and then you can click on your PC name. Once you do that, it should fill it in in this field. For the authentication, I'll leave it set to Windows authentication, and once all of that is set, let's click on connect. This drops us into the main SQL Server management view, and over on the left hand side we have something called the object explorer. Right up here we can click on this plug icon and this allows us to connect to additional servers.
So maybe at work you want to connect to multiple servers at the same time. You can do that. And once you connect to additional servers you'll simply see more in this list.
If you no longer need access to one of these servers you could simply click on this icon to disconnect. Right up here at the top I can see the instance or the server that I'm currently connected to. And I'm currently connected to my own computer because I set up SQL Server there.
Underneath that we'll see a tree view of all of these different folders. You have databases, you have security, and the list goes on and on. In this tutorial we're only going to use the one titled databases.
When I click on the plus icon you'll see that there are no databases yet and we need to create one. And to do that let's right click on here. Now we could start a new database from scratch but We are going to restore a database for the Kevin Cookie Company so we can use some existing data to analyze.
Let's click on this. If you'd like to follow along today, I've included a sample database up above and you'll also find it down below in the description. Probably the best way to learn is to follow along, but you can also just watch this video. Once you download the file, let's click on this option that says device, then click on the ellipsis, and here click on add. Next, navigate to where you saved your backup file.
Here I'll click on the backup file and then click on OK. Once again, let's click on OK and here too I'll click on OK. Here I see that the database KCC restored successfully.
That's great. Let's click on OK. Over on the left-hand side, you'll now see a new cylinder icon.
This is the database icon, and the database is called the KCC for the Kevin Cookie company. I'll click on this plus icon, and this expands it. Within here we have database diagrams, tables, and the list goes on. The one that we're most interested in today is the one titled Tables.
Here I could click on the plus icon and we see that this database has four different tables. We have one titled Customers, Order Product, Orders, and also Product. You might be wondering why do we break a database up into separate tables?
Can't we just have everything in one big file? And here's what that would look like. And if you look closely you might start to notice some issues here. Here we repeat the customer name again and again and all of their address and contact information.
We also repeat the cookie name again and again. Instead of repeating this information again and again, we can break it up into separate tables. So here for example, imagine I have an orders table and for this order it's for customer 5. So instead of putting all of that customer's information here, instead I could say, oh customer 5 and then I can jump to another table with all of the details on customer 5 and here's all of their contact information. This is the core idea behind databases.
We can use various IDs to connect together these tables and that's why it's referred to as a relational database because we have relations between these different tables. When you're designing a database, you want your data to repeat as few times as possible. The benefit of that is that it takes up less space and it's also easier to get back to data. And this process is referred to as normalization.
So here I've now separated all of the data out into separate tables. So there's a customers table, an orders table, a table with all of the orders and the products in those orders, and then one table with all of the products. And if you look at these four tables, this takes up a lot less space than this one massive flat file. Back within SQL Server Management Studio, here you'll see our four different tables, and each table name starts with dbo. This beginning portion is the default schema name, and the schema is simply a way that you can bucket together different tables.
You can also use it to provide access to certain tables. So certain users might have access to one schema and other users might have access to a different schema. For this tutorial, we're simply going to stick with the default of DBO. Let's now look at what's contained within one of these tables. Here I can right click on the customer's table and I can select the top 1000 rows.
Here when I select that, here you'll see the SQL query that gives me the results or all of the data within the table. And in a moment, we'll come back to how we can write these queries on our own. But first, let's look down below at the results.
Here this looks similar to what you would find in say a spreadsheet. You have a whole bunch of columns and you also have a number of different rows. These columns here within a database, these are referred to as fields and then the rows are referred to as records.
Within the table you might also be wondering why do we have separate columns for all of this information like the address, the city, the state, and the reason why is if we just put it all together in one big column It would be harder to get back and to query against that data. So if we break it down to the most granular level, that makes it easier to access that data again in the future. Now that we've looked into one of our tables, let's take a look into another one of our tables and look at how we'll make a connection between them.
I'll go over to orders, right click, and here too just like we did before, let's select the top 1000 rows. Here once again we see the SQL query that gives us these results. So here we have all of our order information. So we have orders 1 through 50. And here in this table you'll see that it references a customer id. So here this order number 1 references customer id number 5. If I go back to the customer table here I can see who customer number 5 is.
So we can relate these tables using the customer id. The customer id in this table also happens to be what's called the primary key, and this is an important concept for databases. The primary key is the minimum number of columns that you need to uniquely identify a record.
So let's just work through this. Could you use the customer name as the primary key? Well, here you have Trey Delicious, so if I say, hey, Trey Delicious, in this case you cannot uniquely identify the row or the record because here we have Trey Delicious twice. We also have the phone number show up twice.
You could have an address repeat. You could have a city repeat. So you can't use any of this information to uniquely identify one of these records. Instead, we have the customer ID, and with this customer ID, you know exactly which row we're talking about, and that's why it's referred to as the primary key.
In the orders table, we have two different IDs, but for orders, the order ID is the unique identifier and that's why it's the primary key. And the reason why is here if we look at customer ID, you see that customers can have multiple orders. And so here we see the customer ID show up multiple times.
So once again, the primary key is the minimum number of columns to uniquely identify a row. And so in this case, the order ID is the primary key. Now that we've touched on primary keys and also how we relate these different tables, we can actually visualize how all these tables are connected. Go up to database diagrams and expand this category. If you want to create your own database diagram, you can right click here and then you can create a new database diagram, but it should already be part of the database.
Simply click on this option. This opens up our database diagram and here we can see the four different tables that are part of our database, and here you can also see all the different fields that are within each one of these tables, and right here we can see which one is the primary key. You can see this small yellow key icon.
So here we can see what the primary key is in each table. In the order product table, there is no individual primary key. To uniquely identify an item, it's a combination of the order ID and the cookie ID.
So here, just to walk through this, for every single customer, you can have many different orders. So here we have the infinity symbol indicating that it's a one-to-many relationship. And for each order, you can have many products part of the order. So for one order, you can have many different products.
And then for all of the different products, we have our product table. So for one product, it can show up in multiple different orders. Setting up a database diagram is a nice way to get a visual of how a database is laid out, and also when you're querying against a database, it helps you understand how they relate. You can also visualize how a table is organized over on the left-hand side in the object explorer.
Here, for example, I have my orders table. I can click on this plus icon. and here I can click on the plus next to columns, and here I can see all of the different columns that are contained within this table, and here I see a visual indication of what the primary key is. Here the primary key is the order ID. I can also review all of the different data types.
Here I'll right click on orders, and here I can select design. Within the design view, here I can see all of the different column names, and I could also see the associated data type. Now this will be important especially as we start querying.
For example, for customer id, the data type is set to integer, so it has to be a number. So you wouldn't want to say compare it or filter for a customer id with a letter because that isn't part of the integer data type. With all of this foundational information now out of the way, you're in a good spot to start querying. To write our first query, let's go up to the top bar and then click on new query. You can also press the shortcut key control N.
This opens up a new window where we can now write our query, but before we do that let's just check a few things. Right up here you'll see a drop down and it currently says the kcc database. When we write our query in this window, it's going to execute against this database. If you have multiple databases, here you can choose which database you want the query to execute against. Also, to help us with writing this query, we're going to write a query against the customers table.
To help us with this, let's click on the plus icon and this way we can see all of the different column names. For the first query, I simply want to see a list of all of our customers. When I look over here at the customers table, here I see that one of the columns is called customer name.
I just want to see all of the different customer names in this table. To start the query, let's first type in select. Select allows us to retrieve data from a table, and once again I want to get the customer name. So I'll type in select and then customer name.
Here it matches the column header name exactly, and next I need to specify where I want to get the customer name from. So next I'll enter in from, and I want to get it from the customers table. So I'm going to type in dbo.customers and this is our query. That's all we have to enter in.
Now that we've finished entering the query, up here we can click on execute, and that'll run the query, or alternatively as I hover over that button you might have noticed that the shortcut key is F5. Here I'll press F5 and that runs the query. Here we can see all the different customer names contained within the customers table. And congratulations, you just wrote your first query.
See, that wasn't that hard. Now let's say I want to get more information than just the customer name. Let's say I want to see all of the notes associated with each one of these customers. Right now, I'm just selecting one of these columns, but if I want to include another column, I simply enter a comma and then I could type in the other column name that I want.
I also want to get the notes, so I'll type in comma and notes and the rest of the query is exactly the same. And now once again I want to run this, so I'm going to press the F5 key, and here now I can see all of the different customer names along with the associated notes. As you start working with more and more SQL queries, you'll likely find yourself jumping in between different databases. Here for instance, I'll move from the KevinCookieCompany database to the master database. Now when I try to execute this query, I get an error message because in the master database there's no table called dbo.customers.
So my query fails. If you want to prevent this from happening, instead of just specifying the table that you want to get this data from, you can also specify the database. Now remember that this database is called KCC.
So before the table name, I can type in kcc.dbo.customers. So now not only does it specify the table name, but also the database name. Now when I try to execute this query, I get the same results that I got before, even though right up here the master database is currently the active one. Within the results, you'll see that the customer name column doesn't have a space. I can customize or define what this column header should look like.
Right up above in the select statement, I select the customer name, and right after that I can type in as and then I can insert a bracket, and within here I can type in exactly how I want the name to appear. So I want to type in customer name with a space. Now when I run this query, you'll notice that the column header now has a space. Now once again I can type in any value into this alias. Next, I'm going to remove notes from the query and once again when I run this I see a list of all of our different customers.
One thing you might notice is within this customer list Trade Delicious shows up twice. That's because the customer has two different headquarters and we've included them in our customer table two times. But let's say I just want a list of all of the distinct or unique customers that we work with. Before the customer name in the select statement, here I can type in distinct and then I will enter a space, and when I run this query again, here I only see Trade Delicious once because it's only showing me all of the distinct values.
So far we've been looking at how we can get specific columns back, but what if I want to get all of the columns back in this table? Do I have to enter in all of the different column headers within the select statement? Of course not.
We can have the computer do this for us. Here I'm going to remove this portion of the query and here I can enter the asterisk symbol or the wildcard, and now when I press F5, here this returns all the different columns and all of the different records within this table. Now let's say I don't want to see everything, but I just want a sample of the data. I can type in top, Here I'll type in the top and maybe I just want the top three records, and here once again I could run this, and here I just see the top three records.
As we've been running these queries there's a yellow bar down below that tells us whether or not the query executed successfully. Also over on the right hand side you'll see some helpful information telling you how many rows you got back. So here we wanted the top three and I can confirm that we got three rows back.
Especially when you start running some more complex queries, here you'll see the runtime to see how long your query has been running for. Now that we know how to get some basic data back using queries, how can you filter the data? So let's say for example I want to get a list back of all of our customers in the state of Washington. Here I'll remove the top three portion of our query. So right now when I run this we get all the customer information back.
At the very end of this query, I can enter where and once again I want to find all customers in the state of Washington. So here I'll type in state equals Washington and that's all I need to enter in. Now when I press F5 we only get back this one customer that's based out of Seattle, Washington. To make this query easier to read, here I can insert spacing.
I can also press enter and I can add new lines, and when I run this query I get the exact same result. So as you're pulling together your queries, feel free to insert spaces or character returns to make it easier for you to follow along. Another thing that will help you follow along with your code and also help other people with your code is entering comments. Here for example, I can enter two dashes and I can write a comment. Here I typed in this returns all customers in Washington state.
Alternatively, instead of entering the dash dash, I could also enter a slash and the asterisk, and at the end I can enter the asterisk and a slash again, and this will also create a comment. So you have those two different options. In this example, I'm looking at just customers located in Washington state. But instead of saying equal to Washington state, I could also say not equal to Washington state. So show me all the customers who are not located here.
When I press F5 to run, here I see the five other customers who are not based out of Washington state. And here I could also enter the exclamation mark and the equal sign that also means not equal to, and when I press F5, once again I get the same exact result. In my where clause, I can also use an or statement.
So let's say I want a list back of all of my customers who are in Washington state or in New York state. Here I can enter in New York and when I run my query, here I see my two different customers. One's in Washington and one's in New York.
Now let's say I also want to see customers who are in Utah. Now once again I can type in or state equals and let's now look for Utah. I'll press F5 and here I see that I have three customers and each one is in one of these states, but especially as I start expanding this, it becomes somewhat unwieldy. Instead, I can use in.
Here I'll change this to in, and I'll insert a parenthesis, and let me leave Washington, but I'll remove or and state. I'll insert a comma, and then I'll remove this portion, and then I'll leave in Utah. Now I'll close the parenthesis, and when I press F5, I get the exact same result.
but the code is a little bit cleaner and a little bit more efficient. Currently this query shows me all of my customers who are in either Washington or New York or in Utah, but what if I want to see all of my customers who are not in these states? Right here in front of in I can type in not in, and here I'll press F5 and this shows me all of those customers who are not in those states.
I've now gone back to the base query where we get all the records back in this table. Now let's say I want to filter down to the customer Trey Delicious who's located in the United States. Now once again I can enter where and here I'll type in customer name equals Trey Delicious.
When I run this query I get two customers back, but once again I only want to see the one in the United States. So unlike the previous query where we used or here we can type in and. and then I'll type in country equals United States. Now when I run the query I just get this result back. So we can also use AND to filter our data.
We can also combine ANDs together with ORs. Right now we're looking for the customer name and this country. Let me enter down to a new line.
Here I could also type in OR and maybe I say country equals let's say France. When I press F5 Here we're looking for this customer and either the United States or France, and I get these two results back. Especially when you start adding a lot of ands and ors, it might be confusing as to how the query is going to run.
Which part does it execute first? Which part does it execute second? To make it extremely clear, you can use parentheses.
So I want the customer to be Trey Delicious. and I want the country to be either the United States or France and it works as is right now, but to make it clearer I can insert a parenthesis here and here. So this way I know that it evaluates this customer name and this portion here. When I press F5, it gives me the same result, but it's a little bit easier and cleaner to read. So far in our WHERE clause we've been looking for a specific customer name.
But what if I just want to see all customers who say begin with the letter A? Instead of entering the equal sign here, I can type in like and here I'll remove the name and let me type in an A and next I'll type in the percent sign. So I want it to begin with an A, but there can be any number of characters after the A. When I press F5 to run here I see that there are two customers that begin with an A. Now instead of saying like I could also say not like, and when I run this I see all the customers who do not begin with the letter A.
Next let's shift our focus over to the orders table, and I want to show you how you can also filter based on numbers and numerical values. Here I'll right click on orders and let's select the top 1000 rows. Here we see the query that returns the top 1000 rows. Now this table only has 50 rows, so we see all the different data contained within this table.
Now let's say that I want to see all of the orders that exceed $1000. Here once again I can type in where and I can then type in order total is greater than 1000. Now when I run the query I only see all the different orders where the order total exceeds 1000. Along with that I could also say greater than or equal to. Here I could also enter in less than or equal to.
When I run this again here I see all of the orders that are less than 1000. And I could also use something called between. Here I'll type in between and let's say between 1000 and 2000. Here once again I'll press F5 to run the query and now we only see orders with an order total between 1000 and 2000. Now one thing to note this will be inclusive of both 1000 and 2000. So far we've been looking at how you can retrieve data from just one table. We pulled some data from the customers table and we pulled some data from the orders table.
But what if you want to pull data from let's say two tables or even three different tables? Here I can see all of our order data. So we have quite a few orders here, but here it simply refers to the customer ID and that doesn't really do me much good. If let's say there's an order and I want to follow up with the customer on that order, I need the customer name and I also need their phone number. So it'd be really nice if I could also see those two columns alongside all of the order information.
To join these two tables together, let's start from scratch. I'm going to remove this query altogether. And once again, I want to pull some information from the orders table. I want the order ID and the order date and the order total.
So here I'll type in select and then I'll type in the order id, the order date, and the order total, and once again this is coming from the orders table. So I'll type in from dbo.orders, and when I run this here's all the data that I want back. To make things a little bit cleaner I'm going to insert enters here just so it's a little bit easier to read.
Here now this is exactly the same, and when I run it once again I get the same result. Now I mentioned earlier that I also want to get the customer name back and the phone number. So here in the select statement let me also type in the customer name, and right here I'm also going to type in phone number.
Now when I execute this query I get an error message back, and the reason why is in the orders table there's no customer name and there's no phone number. First I need to connect the orders table to the customers table, and we can do that by using a join. I want to join my orders table with my customers table. So here I'll type in join and then I'll type in dbo.customers. So right now I've joined these tables, but I need to specify how I'm going to join these.
And here when I look at the customer table there's a customer ID, and here when we look at the order table there's also a customer ID here. So I can join on that column. To join on that column I simply type in on and here I'm going to type in on dbo.orders.customerId.
So here once again I'm referring to this value right here. And I want to join it on the customerId in dbo.customers. So here I'll type in dbo.customers.customerId.
Now when I run this query here I get back all of the different orders along with the customer name and the phone number. That's exactly what I want. To clean things up I can also use an alias here. So here from dbo.orders instead of referring to dbo.orders I can simply refer to o.
And the same down here where I say dbo.customers here maybe I use an alias of c. The benefit of that is here I can remove the reference to dbo.orders and instead I can insert an o. And right down here where I say dbo.customers here I can insert a C. When I press F5 to run, I get the exact same result, but my code is a little bit easier to read now.
When we ran this query, we did something called an inner join, and in fact I can go back to this join statement and I could type in inner join, and here when I run it we get the exact same result. In fact, when you just enter join that by default runs an inner join. So what is an inner join? Well, an inner join gives me all the customers back who have an order, and it also gives me back all orders that have a customer associated with it.
So let's say there were, let's say, a customer that doesn't have any orders. That would not show up in this list. Basically, there has to be overlap between orders and customers for the result to show up down below. Now let's say I have a customer who doesn't have any orders, but I still want to see the customer in the results down below.
Let me bring this line up just to make it a little bit easier to visualize. Here I'll remove the portion that says inner join and here I'll type in right outer join. And here when I run this let's go to the very bottom of the list and here now we see that there's one customer without any order. So what does a right outer join do?
Well here it's saying the right item here which is dbo.customers. I want to see all customers irrespective of whether they have an order. So here I get all customers back even if that customer has no order. So here for the order value down below it says null. Now let's say I want to see all orders whether or not there's a customer.
Well orders is on the left side over here, so instead of saying right outer join I want to do a left outer join instead. And now when I run this query it gives me the same result as the inner join. but the only reason why is every order happens to also have a customer, but if there were say an order without a customer, the left outer join would have given me orders and then for the customer name and phone number it would have given me null values.
In my query let's say I also want to get back the customer ID. So right up here in the select portion of the query I'll insert a comma and here let's type in customer ID. When I run the query though I get an error message.
and it tells me that it's an ambiguous column name. And the reason why is here in the customer table I have a customer ID. And also down below in the orders table there's also a customer ID.
So it doesn't know which customer ID it should use. Well that's simple to solve. I could simply tell it which table I want to use. And let's just pull it from the customers table.
Here the alias for that is C. So I can enter a C dot and then customer ID. And now when I run it once again it works and here I have the customer ID.
Now that I have these results back, let's say I want to order these by the order total. Right now they're all just kind of randomly mixed in. I have large values, smaller values, large value again.
At the very bottom of this query I can add order by, and here I want to order by the order total column. Here I can type in order total and then run my query again. And here you see that it's in ascending order.
So here I start with 39 and then we finish off at 3518. Instead I could also look at it in descending order. Here I'll type in descending, execute, and here you see that we start large and then it goes down to the smallest value. SQL also gives you access to a number of different functions. So you could do things like get the current date or you could sum up values or you could get a count.
These are just a few examples of the functions that you have access to. Here in this example, I want to see all of the orders from the past month. So here I'm selecting all orders from the orders table and I'm looking at where the order date is greater than or equal to a date that's one month in the past.
But let's say in a week from now, I want to run this same query again where I look at all the orders from the past month. Well, this date would no longer be just the past month, so I would have to update this date. Instead, I could replace this with a function. Here I'll remove this date and let's use the date add function. Here I need to specify what the interval is and I want to look at the last month, so I'll type in month and I want to look at the last month, so for the increment here I'll type in a negative one and for the expression that's the current time and for this I could use yet another function.
I'll type in get date and then I'll close the parentheses and here I can run it and I get the exact same results that I got before except now when I run this again next week it'll also show me all the orders from the past month, but I no longer have to go in and update this date manually. I can also use aggregate functions. So instead of selecting all orders, what if I just want to see a count of all orders from the last month? Here I could type in count and let's count all of the different rows.
Now when I run this, I see that there were 16 orders in the last month. Instead of counting, I can also sum up all the different order totals from the last month. Here I'll type in order total and run again and Here I could see that in the last month we had over $17,000 of revenue. Not too bad for a cookie company.
Now let's say I want to see the order total by the customer ID. Down at the end of this query, I can type in something called group by and here I'll type in the customer ID. Now when I run this, I see the sum of the order total by the various customer IDs in the last month. We've written some fairly complex queries, but next I want to show you how you can write just about any query with ease, and we're going to use something called the Query Designer. Here in a new query, simply press your right mouse button and then select design query in editor.
This opens up the Query Designer, and first we can choose the tables that we would like to query against. Now I want to pull data from the customers table and the orders table. So, here I'll press control and select both of these tables and then click on add. Next, I'll click on close. Within the query designer, here I can see all of my different tables and all of the different columns within those tables.
And here I could also see how these two tables are related. So, really nice way to visualize. But now look at how easy it makes it to pull together a query. Let's say I want to get a customer name and all of their different orders. Here I simply click on customer name, and here I can click on let's say the order ID.
Maybe I want the date and also the order total. Here I see all those different fields or columns populate in this grid down below, and here you see that it automatically writes the SQL statement for me, and it joins these two tables together. When I click on OK, here I can now run the query, and here I get all the customer names with the order ID, the order date, and the order total.
That was really easy to pull together. To go back to the query editor, here I can highlight my query and then I could right click and once again I'll click on design query in editor. Back within the query editor, here I could also add an alias.
So we see that customer name doesn't have a space. Here I could type in customer name and that automatically adds an alias down below. I can also add filters.
Let's say I just want to see all orders from the last month. Over here in filter, I could say greater than or equal to 218 2022, and when I enter that in, it automatically adds where, and now it'll just provide me with those orders. If I don't want to show the output from order date, here I can check this box and it leaves the where condition, but it removes it from the select statement.
Here I can also select the sort type, the sort order, and if I right click up here, I can even add the group by. So let's say I want to pull a sum of the order total by customer name. I could do that as well.
Here for instance, I'll change order total to sum, and let me remove the order id. So here I want to see all of the customer names and the sum of their order total in the past month. I'll click on OK, and when you look at this, this is a fairly complex query, but here when I execute it, it just runs easily.
Alright, well that's how you can get started using SQL. And hopefully you agree with me now that SQL is not really that hard to get started with and it's really tremendous what types of insights you can extract from your data. Let me know in the comments what other topics related to SQL would you like to see on this channel.
To watch more videos like this one, please consider subscribing. I'll see you in the next video.