FAQ: Set Operations - Union All


#1

This community-built FAQ covers the “Union All” exercise from the lesson “Set Operations”.

Paths and Courses
This exercise can be found in the following Codecademy content:

SQL: Table Transformation

FAQs on the exercise Union All

There are currently no frequently asked questions associated with this exercise – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this exercise. Ask or answer a question by clicking reply (reply) below.

If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this exercise, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head here.

Looking for motivation to keep learning? Join our wider discussions.

Learn more about how to use this guide.

Found a bug? Report it!

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!


#2

I understand that the query is counting the number of order items in the union of the two tables, but I’m struggling to get what the “as a” means at the end:

SELECT count(*) FROM (
SELECT id, sale_price FROM order_items
UNION ALL
SELECT id, sale_price FROM order_items_historic) as a;

I saw something similar in earlier lessons, but couldn’t find an explanation there either.

Any help would be appreciated!

Thanks


#3

The ‘as a’ is an SQL alias or ‘nickname’ of sorts that’s used to give a table, a column, or a subquery a temporary name that will be used in the query. The name allows for one to easily understand and define which table or subquery is being referenced by each column. It can also be used to give a column a name different from the one provided in the table so that the results reflect that alias, which is sometimes useful when the orginal column name in a table isn’t clear or readable.


#4

It didn’t like my answer even though it is correct.
I just don’t do the copy/paste/tweak routine to arrive at the solution.
I didn’t use the alias ‘a’ and my columns were in different order but the output is the same…very disappointing.
I wasted 5 frustrating minutes trying to figure out what was wrong with my query.


#5

I found the question confusing. It sounded to me like they wanted the average sale price over the two tables, but what they actually want is the average sell price per item in the two tables.


#6

I agree, this was annoying.


#7

My solution gave an error, (red x stared at me like i did everything wrong), but when i checked the solution from codecademy, i couldn’t find any differences?

My solution:
select avg(a.sale_price)
, a.id
from (
select sale_price
, id
from order_items
union all
select sale_price
, id
from order_items_historic
) as a
group by 2

Codecamedy solution:

SELECT id,
avg(a.sale_price)
FROM (
SELECT id,
sale_price
FROM order_items
UNION ALL
SELECT id
, sale_price
FROM order_items_historic) AS a
GROUP BY 1;

What did i do wrong?

Grtz!


#8

You selected a.id and it should be just id. I am not sure about the Group by function though.


#9

My solution:
select avg(a.sale_price)
, a.id --> there it is indeed!

Thanks :slight_smile:


#10

i think you forget putting semi- colon at end of the code
try to put it


#11

No, we must use group by function because we using an aggregate function AVG(a.sale_price)


#12

Completely unclear instruction about necessarity of ID column usage in outer query and inintial conditions tells nothing about clause group by. It’s frustrated me a lot.