1+ WITH filtered_data AS (
2+ SELECT
3+ id,
4+ code,
5+ name,
6+ wikipedia_link AS wikipedia_link,
7+ CAST(area AS SIGNED) AS area,
8+ CAST(population AS DECIMAL (15 , 2 )) AS population,
9+ CAST(countries_number AS SIGNED) AS countries_number,
10+ ROUND(
11+ CAST(population AS DECIMAL (15 , 2 )) / NULLIF(CAST(area AS DECIMAL (15 , 2 )), 0 ),
12+ 5
13+ ) AS density
14+ FROM
15+ continent
16+ WHERE
17+ LOWER (name) LIKE ' %a%'
18+ ORDER BY
19+ name ASC
20+ ),
21+ pagination AS (
22+ SELECT
23+ id,
24+ code,
25+ name,
26+ wikipedia_link AS wikipediaLink,
27+ CAST(area AS SIGNED) AS area,
28+ CAST(population AS DECIMAL (15 , 2 )) AS population,
29+ CAST(countries_number AS SIGNED) AS countriesNumber,
30+ ROUND(
31+ CAST(population AS DECIMAL (15 , 2 )) / NULLIF(CAST(area AS DECIMAL (15 , 2 )), 0 ),
32+ 5
33+ ) AS density
34+ FROM
35+ filtered_data
36+ LIMIT
37+ 5 OFFSET 0
38+ ),
39+ totals AS (
40+ SELECT
41+ CAST(SUM (area) AS SIGNED) AS total_area_all,
42+ CAST(SUM (population) AS DECIMAL (15 , 2 )) AS total_population_all,
43+ CAST(SUM (countries_number) AS SIGNED) AS total_countries_number_all,
44+ COUNT (id) AS count_all,
45+ ROUND(
46+ CAST(SUM (population) AS DECIMAL (15 , 2 )) / NULLIF(CAST(SUM (area) AS DECIMAL (15 , 2 )), 0 ),
47+ 5
48+ ) AS average_density_all
49+ FROM
50+ filtered_data
51+ ),
52+ totals_pagination AS (
53+ SELECT
54+ CAST(SUM (area) AS SIGNED) AS total_area,
55+ CAST(SUM (population) AS DECIMAL (15 , 2 )) AS total_population,
56+ CAST(SUM (countriesNumber) AS SIGNED) AS total_countries_number,
57+ COUNT (id) AS count,
58+ ROUND(
59+ CAST(SUM (population) AS DECIMAL (15 , 2 )) / NULLIF(CAST(SUM (area) AS DECIMAL (15 , 2 )), 0 ),
60+ 5
61+ ) AS average_density
62+ FROM
63+ pagination
64+ )
65+ SELECT
66+ (
67+ SELECT
68+ count_all
69+ FROM
70+ totals
71+ ) AS count,
72+ (
73+ SELECT
74+ total_area_all
75+ FROM
76+ totals
77+ ) AS area,
78+ (
79+ SELECT
80+ total_population_all
81+ FROM
82+ totals
83+ ) AS population,
84+ (
85+ SELECT
86+ total_countries_number_all
87+ FROM
88+ totals
89+ ) AS countriesNumber,
90+ (
91+ SELECT
92+ count
93+ FROM
94+ totals_pagination
95+ ) AS countPagination,
96+ (
97+ SELECT
98+ total_area
99+ FROM
100+ totals_pagination
101+ ) AS areaPagination,
102+ (
103+ SELECT
104+ total_population
105+ FROM
106+ totals_pagination
107+ ) AS populationPagination,
108+ (
109+ SELECT
110+ total_countries_number
111+ FROM
112+ totals_pagination
113+ ) AS countriesNumberPagination,
114+ (
115+ SELECT
116+ average_density_all
117+ FROM
118+ totals
119+ ) AS density,
120+ (
121+ SELECT
122+ average_density
123+ FROM
124+ totals_pagination
125+ ) AS densityPagination,
126+ JSON_ARRAYAGG(
127+ JSON_OBJECT(
128+ ' id' ,
129+ pagination .id ,
130+ ' code' ,
131+ pagination .code ,
132+ ' name' ,
133+ pagination .name ,
134+ ' wikipediaLink' ,
135+ pagination .wikipediaLink ,
136+ ' area' ,
137+ pagination .area ,
138+ ' population' ,
139+ pagination .population ,
140+ ' countriesNumber' ,
141+ pagination .countriesNumber ,
142+ ' density' ,
143+ pagination .density
144+ )
145+ ) AS continents
146+ FROM
147+ pagination;
0 commit comments