SQL > Advanced SQL > Inline ViewAn inline view is a SELECT statement in the FROM clause. As mentioned in the View section, a view is a virtual table that has the characteristics of a table yet does not hold any actual data. In an inline view construct, instead of specifying table name(s) after the FROM keyword, the source of the data actually comes from a view that is created within the SQL statement. The syntax for an inline view is,
SELECT "column_name" FROM (Inline View);
When should we use inline view? Below is an example:Assume we have two tables: The first table is User_Address, which maps each user to a ZIP code; the second table is User_Score, which records all the scores of each user. The question is, how to write a SQL query to find the number of users who scored higher than 200 for each ZIP code? Without using an inline view, we can accomplish this in two steps: Query 1
CREATE TABLE User_Higher_Than_200
Query 2SELECT User_ID, SUM(Score) FROM User_Score GROUP BY User_ID HAVING SUM(Score) > 200;
SELECT a2.ZIP_CODE, COUNT(a1.User_ID)
In the above code, we introduced a temporary table, User_Higher_Than_200, to store the list of users who scored higher than 200. User_Higher_Than_200 is then used to join to theUser_Address table to get the final result.FROM User_Higher_Than_200 a1, User_Address a2 WHERE a1.User_ID = a2.ZIP_CODE GROUP BY a2.ZIP_CODE; We can simplify the above SQL using the inline view construct as follows: Query 3
SELECT a2.ZIP_CODE, COUNT(a1.User_ID)
The code that is in red represents an inline view. There are two advantages on using inline view here:FROM (SELECT User_ID, SUM(Score) FROM User_Score GROUP BY User_ID HAVING SUM(Score) > 200)a1, User_Address a2 WHERE a1.User_ID = a2.ZIP_CODE GROUP BY a2.ZIP_CODE; 1. We do not need to create the temporary table. This prevents the database from having too many objects, which is a good thing as each additional object in the database costs resources to manage. 2. We can use a single SQL query to accomplish what we want. Notice that we treat the inline view exactly the same as we treat a table. Comparing Query 2 and Query 3, we see that the only difference is we replace the temporary table name in Query 2 with the inline view statement in Query 3. Everything else stays the same. Inline view is sometimes referred to as derived table. These two terms are used interchangeably. |
Saturday, 13 December 2014
SQL INLINE VIew
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment