[英]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.