Select rows until a total amount is met in a column (mysql)

前端 未结 5 844
再見小時候
再見小時候 2020-12-19 23:41

I have seen this issue in SF, but me being a noob I just can\'t get my fried brain around them. So please forgive me if this feels like repetition.

My Sample Table

5条回答
  •  执念已碎
    2020-12-20 00:07

    Here is a rough demo about cursor, may be it's helpful.

    CREATE TABLE #t
    (
        ID       INT IDENTITY,
        Supplier INT,
        QTY      INT
    );
    
    
    TRUNCATE TABLE #t;
    
    INSERT  INTO #t (Supplier, QTY)
    VALUES         (1, 2),
    (1, 2),
    (2, 5),
    (3, 2),
    (1, 3);
    
    DECLARE @sum AS INT;
    
    DECLARE @qty AS INT;
    
    DECLARE @totalRows AS INT;
    
    DECLARE curSelectQTY CURSOR
        FOR SELECT   QTY
            FROM     #t
            ORDER BY QTY DESC;
    
    OPEN curSelectQTY;
    
    SET @sum = 0;
    
    SET @totalRows = 0;
    
    FETCH NEXT FROM curSelectQTY INTO @qty;
    
    WHILE @@FETCH_STATUS = 0
        BEGIN
            SET @sum = @sum + @qty;
            SET @totalRows = @totalRows + 1;
            IF @sum >= 5
                BREAK;
        END
    
    SELECT   TOP (@totalRows) *
    FROM     #t
    ORDER BY QTY DESC;
    
    CLOSE curSelectQTY;
    
    DEALLOCATE curSelectQTY;
    

提交回复
热议问题