[英]SUM when a value is equal or greater than 3,500 only?
有如下 3 個交易,我只想對價值等於或大於 3,500 的交易編號求和:
transaction no. total
0001 1,000
0001 2,000
0001 3,000
0001 4,000
0002 2,000
0002 3,000
0003 1,000
0003 1,000
0003 1,000
這是我期望的結果:
transaction no. total
0001 10,000
0002 5,000
當然,交易沒有。 0003 不會顯示,因為它低於 3,500。
將group by
與Having Clause
select transactionNo,sum(total) as totalval
from tablename
group by transactionNo
having sum(total)>3500
你只需要使用如下的have子句:
SELECT transactionNo, SUM(total) AS total
FROM myTable
GROUP BY transactionNo
HAVING SUM(total) > 3500
HAVING 子句被添加到 SQL 中,因為 WHERE 關鍵字不能與聚合函數一起使用。
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s);
SELECT transactionNo, SUM(total) AS total
FROM table_name
GROUP BY transactionNo
HAVING SUM(total) > 3500
您可以使用以下代碼:
SELECT DISTINCT transactionNo,
runningtotal
FROM (
SELECT myTable1.transactionNo,
myTable1.total,
SUM(myTable2.total) AS runningtotal
FROM myTable myTable1
INNER JOIN myTable myTable2
ON myTable1.transactionNo = myTable2.transactionNo
GROUP BY
myTable1.transactionNo,
myTable1.total
) result
WHERE runningtotal > 3500
或者您可以使用窗口函數並使用CTE
;WITH ResultTable AS (
SELECT DISTINCT transactionNo,
SUM(total) OVER(PARTITION BY transactionNo) AS total
FROM myTable
)
SELECT *
FROM ResultTable
WHERE ResultTable.total > 3500
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.