Hello coders, today we are going to solve Print Prime Numbers HackerRank Solution in SQL.

Problem
Write a query to print all prime numbers less than or equal to 1000. Print your result on a single line, and use the ampersand (&) character as your separator (instead of a space).
For example, the output for all prime numbers <=10 would be:
2&3&5&7
Solution – Print Prime Numbers in SQL | Hacker Rank Solution
MySQL Server
/* Enter your query here. Please append a semicolon ";" at the end of the query and enter your query in a single line to avoid error. */ DECLARE @Output AS VARCHAR(MAX) = ''; WITH digit(d) AS ( SELECT 0 AS d UNION ALL SELECT d+1 AS d FROM digit WHERE d < 9 ) SELECT @Output += CAST(a.Number AS VARCHAR(3)) + '&' FROM ( SELECT a.d * 100 + b.d*10 + c.d + 1 AS Number FROM digit a CROSS JOIN digit b CROSS JOIN digit c ) a LEFT JOIN ( SELECT a.d * 100 + b.d*10 + c.d + 1 AS Number FROM digit a CROSS JOIN digit b CROSS JOIN digit c ) b ON SQRT(a.Number) >= b.Number AND b.Number > 1 WHERE a.Number > 1 GROUP BY a.Number HAVING ISNULL(SUM(CASE WHEN a.Number % b.Number = 0 THEN 1 ELSE 0 END),0) = 0 ORDER BY a.Number PRINT SUBSTRING(@Output,1,LEN(@Output)-1) ;
Disclaimer: The above Problem (Print Prime Numbers) is generated by Hacker Rank but the Solution is Provided by CodingBroz. This tutorial is only for Educational and Learning Purpose.
answer showing incorrect
DECLARE @I INT=2
DECLARE @PRIME INT=0
DECLARE @OUTPUT TABLE (NUM INT)
WHILE @I1
BEGIN
IF @I % @J=0
BEGIN
SET @PRIME=0
END
SET @J=@J-1
END
IF @PRIME =1
BEGIN
INSERT @OUTPUT VALUES (@I)
END
SET @I=@I+1
END
SELECT string_agg(Num, ‘&’)
FROM @OUTPUT