I'm struggling to understand what the below 2 chunks of code do. Some comments would be really appreciated.
Chunk 1:
SELECT
l
FROM
(
SELECT
level l
FROM
dual
CONNECT BY
level <= 1000
),
(
SELECT
level m
FROM
dual
CONNECT BY
level <= 1000
)
Chunk 2:
HAVING
COUNT(
CASE l / m
WHEN trunc(l / m) THEN
'Y'
END
) = 2
PD: I will post below the entire SQL query to provide more background. The query just gets the prime numbers 1 to 1000 and listaggs them with ampersands.
SELECT
LISTAGG(l, '&') WITHIN GROUP(
ORDER BY
l
)
FROM
(
SELECT
l
FROM
(
SELECT
level l
FROM
dual
CONNECT BY
level <= 1000
),
(
SELECT
level m
FROM
dual
CONNECT BY
level <= 1000
)
WHERE
m <= l
GROUP BY
l
HAVING
COUNT(
CASE l / m
WHEN trunc(l / m) THEN
'Y'
END
) = 2
ORDER BY
l
);