有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,因此不会显示。
答案 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