Sort by

recency

|

1356 Discussions

|

  • + 0 comments

    i've not yet learnt cte can someone help with a basic sql code. i wrote this but it incorrect

    SELECT GROUP_CONCAT(num SEPARATOR '&') AS primes FROM ( SELECT n.num FROM numbers n WHERE n.num <= 100 AND n.num > 1 AND NOT EXISTS ( SELECT 1 FROM numbers d WHERE d.num > 1 AND d.num < n.num AND n.num % d.num = 0 ) ) AS prime_list;

  • + 0 comments
    WITH RECURSIVE candidates AS (
        SELECT 4 AS i
        UNION ALL
        SELECT i + 1 FROM candidates WHERE i < 1000
    ),
    divisors AS (
        SELECT 2 AS d
        UNION ALL
        SELECT d + 1 FROM divisors WHERE d < FLOOR(SQRT(1000))
    ),
    find_prime AS (
        SELECT c.i, d.d, MOD(c.i, d.d) AS modulus,
            CASE
                WHEN c.i <= 1 THEN 1
                WHEN c.i <= 3 THEN 0
                WHEN MOD(c.i, d.d) = 0 THEN 1
                ELSE 0
            END AS is_not_prime
        FROM candidates c
        JOIN divisors d
        ON c.i > d.d
    ),
    primes_only AS (
        SELECT i
        FROM find_prime
        GROUP BY i
        HAVING SUM(is_not_prime) = 0
    )
    SELECT CONCAT('2&3&', GROUP_CONCAT(i ORDER BY i SEPARATOR '&')) AS primes
    FROM primes_only;
    
  • + 0 comments
    /*
    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 @l INT = 1000
    
    DECLARE @n INT = 2
    
    DECLARE @primes VARCHAR(MAX) = ''
    
    WHILE @n <= @l
    BEGIN
        
        DECLARE @d INT = 2
        DECLARE @b BIT = 1
        
        WHILE @d < @n
        BEGIN
            
            IF @n % @d = 0 AND @n <> @d
            BEGIN
                SET @b = 0
                BREAK;
            END
            
            SET @d = @d + 1
        END
        
        IF @b = 1 
        BEGIN
            SET @primes = @primes + '&' + CAST(@n as VARCHAR(MAX))
        END
    
        SET @n = @n + 1
    END
    
    SET @primes = SUBSTRING(@primes, 2, LEN(@primes) - 1)
    
    print @primes
    
  • + 0 comments

    MYSQL

    WITH RECURSIVE numbers AS ( SELECT 2 AS num UNION ALL SELECT num + 1 FROM numbers WHERE num + 1 <= 1000 ), primes AS ( SELECT num FROM numbers n WHERE NOT EXISTS ( SELECT 1 FROM numbers d WHERE d.num < n.num AND d.num > 1 AND n.num % d.num = 0 ) ) SELECT GROUP_CONCAT(num ORDER BY num SEPARATOR '&') AS prime_list FROM primes;

  • + 0 comments

    For MySQL

    DELIMITER ^^
    
    CREATE PROCEDURE prime_numbers()
    BEGIN
            DECLARE n INT DEFAULT 3;
            DECLARE res VARCHAR(2000) DEFAULT "2";
            
            loop1: WHILE n <= 1000 DO
                    SET @i = 2;
                    SET @isPrime = 1;
                    
                    loop2: WHILE @i <= CEIL(n/2) DO
                            IF n % @i = 0 THEN
                                SET @isPrime  = 0;
                                LEAVE loop2;
                            END IF;
                            SET @i = @i+1;
                    END WHILE loop2;
                    
                    IF @isPrime  = 1 THEN
                        SET res = CONCAT(res,"&",n);
                    END IF;
                    
                    SET n = n+1;
            END WHILE loop1;
            
            SELECT res;
    END ^^
    
    DELIMITER ;
    
    CALL prime_numbers();