仅当一个值等于或大于3500时才求和吗?

时间:2020-01-27 07:44:47

标签: sql sql-server

有3个交易,如下所示,我只想求和等于或大于3500的交易编号:

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低于3500,因此不会显示。

4 个答案:

答案 0 :(得分:4)

@Query(value = "SELECT * FROM table WHERE column ->> 'Id'=?1", nativeQuery = true) public Entity fertchById(String id); group by一起使用

Having Clause

答案 1 :(得分:3)

您只需要使用如下的hading子句:

SELECT transactionNo, SUM(total) AS total
FROM myTable
GROUP BY transactionNo
HAVING SUM(total) > 3500

答案 2 :(得分:1)

将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

答案 3 :(得分:0)

您可以使用以下代码:

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