Did you know that the average return from investing in stocks is 10% per year (not accounting for inflation)? But who wants to be average?!
You have been asked to support an investment firm by analyzing trends in high-growth companies. They are interested in understanding which industries are producing the highest valuations and the rate at which new high-value companies are emerging. Providing them with this information gives them a competitive insight as to industry trends and how they should structure their portfolio looking forward.
You have been given access to their unicorns database, which contains the following tables:
dates
| Column | Description |
|---|---|
company_id | A unique ID for the company. |
date_joined | The date that the company became a unicorn. |
year_founded | The year that the company was founded. |
funding
| Column | Description |
|---|---|
company_id | A unique ID for the company. |
valuation | Company value in US dollars. |
funding | The amount of funding raised in US dollars. |
select_investors | A list of key investors in the company. |
industries
| Column | Description |
|---|---|
company_id | A unique ID for the company. |
industry | The industry that the company operates in. |
companies
| Column | Description |
|---|---|
company_id | A unique ID for the company. |
company | The name of the company. |
city | The city where the company is headquartered. |
country | The country where the company is headquartered. |
continent | The continent where the company is headquartered. |
The output
Your query should return a table in the following format:
| industry | year | num_unicorns | average_valuation_billions |
|---|---|---|---|
| industry1 | 2021 | --- | --- |
| industry2 | 2020 | --- | --- |
| industry3 | 2019 | --- | --- |
| industry1 | 2021 | --- | --- |
| industry2 | 2020 | --- | --- |
| industry3 | 2019 | --- | --- |
| industry1 | 2021 | --- | --- |
| industry2 | 2020 | --- | --- |
| industry3 | 2019 | --- | --- |
Where industry1, industry2, and industry3 are the three top-performing industries.
WITH CTE1 AS (SELECT * FROM (
SELECT industry, EXTRACT(Year FROM dt.date_joined) AS year, ROW_NUMBER() OVER(PARTITION BY EXTRACT(Year FROM dt.date_joined) ORDER BY COUNT(*) DESC) AS rank_count
FROM public.industries ind
INNER JOIN dates dt
ON ind.company_id = dt.company_id
WHERE EXTRACT(Year FROM dt.date_joined) IN (2019, 2020, 2021)
GROUP BY industry, year) AS FOO
WHERE rank_count <=3),
CTE2 AS (SELECT industry, EXTRACT(Year FROM dt.date_joined) AS year, COUNT(*), AVG(fu.valuation)
FROM public.industries ind
INNER JOIN dates dt
ON ind.company_id = dt.company_id
INNER JOIN public.funding fu
ON ind.company_id = fu.company_id
GROUP BY industry, EXTRACT(Year FROM dt.date_joined))
SELECT CTE1.industry AS industry, CTE1.year AS year, CTE2.count AS num_unicorns, ROUND(CTE2.avg,2) AS average_valuation_billions
FROM CTE1
INNER JOIN CTE2
ON CTE1.industry = CTE2.industry AND CTE1.year = CTE2.year
ORDER BY CTE1.rank_count DESC, CTE2.year DESCSELECT industry, EXTRACT(Year FROM dt.date_joined) AS year, ROW_NUMBER() OVER(PARTITION BY EXTRACT(Year FROM dt.date_joined) ORDER BY COUNT(dt.company_id) DESC) AS rank_count, COUNT(dt.company_id)
FROM public.industries ind
INNER JOIN dates dt
ON ind.company_id = dt.company_id
WHERE EXTRACT(Year FROM dt.date_joined) IN (2019, 2020, 2021)
GROUP BY industry, yearWITH CTE1 AS (SELECT industry
FROM public.industries ind
INNER JOIN dates dt
ON ind.company_id = dt.company_id
WHERE EXTRACT(Year FROM dt.date_joined) IN (2019, 2020, 2021)
GROUP BY industry
ORDER BY COUNT(dt.*) DESC
LIMIT 3),
CTE2 AS (SELECT industry, EXTRACT(Year FROM dt.date_joined) AS year, COUNT(*), AVG(fu.valuation) AS avg
FROM public.industries ind
INNER JOIN dates dt
ON ind.company_id = dt.company_id
INNER JOIN public.funding fu
ON ind.company_id = fu.company_id
GROUP BY industry, EXTRACT(Year FROM dt.date_joined))
SELECT * FROM(
SELECT CTE1.industry AS industry, CTE2.year AS year, CTE2.count AS num_unicorns, ROUND(AVG(CTE2.avg)/ 1000000000,2) AS average_valuation_billions
FROM CTE1
INNER JOIN CTE2
ON CTE1.industry = CTE2.industry
WHERE CTE2.year IN (2019, 2020, 2021)
GROUP BY CTE1.industry, CTE2.year, CTE2.count, CTE2.avg
ORDER BY CTE2.year DESC) AS foo
GROUP BY industry, year, num_unicorns, average_valuation_billions
ORDER BY year DESC, num_unicorns DESCtest = 10
dollar =20
weekly = test * dollar
monthly = weekly * 4
yearly = monthly * 12
print('month', monthly, '/n', 'yearly', yearly )