簡體   English   中英

MYSQL SUM,IF和結果為0

[英]MYSQL SUM, IF and result to be 0

我對Mysql語法有疑問, 我有類似的表格

GNT6988 rawabuaya   30000000
GNT3429 Purwacaraka 100000
GNT1326 CLARA       15000000
GNT9059 bensugih1   6100000
GNT9620 bensugih2   6100000
GNT9851 Abdulfattah 500000
GNT3927 SUKSES01    10000000
GNT4469 SUKSES02    10000000

和我有像

SELECT trx, SUM(jmlgf) AS jumlahgf
      FROM gf_start
      GROUP BY trx
      HAVING jumlahgf < 4000000 ORDER BY tgl ASC LIMIT 40

我得到了結果

GNT3429 100000
GNT9851 500000
GNT1405 1000000
GNT9660 100000
GNT7222 100000
GNT2407 2100000
GNT3383 100000
GNT5586 100000
GNT1419 100000

**i want to get result like**

GNT3429 100000
GNT9851 500000
GNT1405 1000000
GNT9660 0
GNT7222 0
GNT2407 0
GNT3383 0

如果SUM(jmlgf)> = 1600000

我應該如何使用mysql語法?

我使用PHP MYSQL

要么使用一個變量,像這樣:

SELECT trx, @sum_so_far:=@sum_so_far + jumlahgf, IF(@sum_so_far >= 1600000, 0, jumlahgf) AS jumlahgf
FROM
(
    SELECT trx, SUM(jmlgf) AS jumlahgf
    FROM gf_start
    GROUP BY trx
    HAVING jumlahgf < 4000000 
    ORDER BY tgl ASC 
) sub0
CROSS JOIN
(
    SELECT @sum_so_far:=0
) sub1
LIMIT 40

或將結果與另一個查詢結合以得出到目前為止的總和,如下所示:-

SELECT trx, IF(rolling_cnt >= 1600000, 0, SUM(jmlgf)) AS jumlahgf
FROM gf_start
(
    SELECT a.trx, SUM(b.jmlgf) AS rolling_cnt
    FROM gf_start a
    INNER JOIN gf_start b
    ON a.trx = b.trx
    AND a.tgl <= b.tgl
    GROUP BY a.trx
) sub0
ON gf_start.trx = sub0.trx
GROUP BY trx
HAVING jumlahgf < 4000000 
ORDER BY tgl ASC 
LIMIT 40

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM