簡體   English   中英

僅當值等於或大於 3,500 時求和?

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

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