Sql 仅当值等于或大于3500时求和?
下面有3个事务,我只想对值等于或大于3500的事务编号求和:Sql 仅当值等于或大于3500时求和?,sql,sql-server,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
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。使用
group by
和Having子句
select transactionNo,sum(total) as totalval
from tablename
group by transactionNo
having sum(total)>3500
将
分组依据
与Having子句一起使用
select transactionNo,sum(total) as totalval
from tablename
group by transactionNo
having sum(total)>3500
您只需使用having子句,如下所示:
SELECT transactionNo, SUM(total) AS total
FROM myTable
GROUP BY transactionNo
HAVING SUM(total) > 3500
您只需使用having子句,如下所示:
SELECT transactionNo, SUM(total) AS total
FROM myTable
GROUP BY transactionNo
HAVING SUM(total) > 3500
HAVING子句已添加到SQL,因为WHERE关键字无法
可以与聚合函数一起使用
HAVING子句已添加到SQL,因为WHERE关键字无法
可以与聚合函数一起使用
您可以使用以下代码:
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
您可以使用以下代码:
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
使用“在您的分组之后拥有”
group by[transaction no.]having sum(total)>=3500
使用“在您的分组之后拥有”group by[transaction no.]having sum(total)>=3500