[英]How to select sum(max remain(x+y+z)) from MySQL, to catch sum(1200+1300+1400)
如何sum(max remain(x + y + z)) from
MySQL中選擇sum(max remain(x + y + z)) from
,以捕獲sum(1200+1300+1400)
?
id | user | remain
-----------------
1 | x | 1000
----------------
2 | x | 1200
----------------
3 | y | 1100
----------------
4 | y | 1300
----------------
5 | z | 1200
----------------
5 | z | 1400
----------------
using (SqlConnection cn = new SqlConnection(Class1.x))
{
cn.Open();
string cm1 = "select sum(max remain(all users)) as 'total' from item_new_company";
using (SqlCommand cmd = new SqlCommand(cm1, cn))
{
using (SqlDataReader dr = cmd.ExecuteReader())
{ dr.Read(); tot5 = dr["total"].ToString(); }
}
}
像這樣:
SELECT SUM(MaxRemain) TotalOfMaxRemains
FROM
(
SELECT MAX(remain) AS MaxRemain
FROM item_new_company
GROUP BY user
) AS t;
結果:
| TOTALOFMAXREMAINS |
---------------------
| 3900 |
子查詢:
SELECT MAX(remain) AS MaxRemain
FROM item_new_company
GROUP BY user
使用GROUP BY user
和MAX(remain)
,將為您提供每個user
的remain
最大值,然后在外部查詢中, SUM
將為您提供總數。
對於SQL Server,以前的查詢應該可以正常工作,但是還有另一種方法:
WITH CTE AS
(
SELECT *, ROW_NUMBER() OVER(PARTITION BY [user]
ORDER BY id DESC) AS rownum
FROM item_new_company
)
SELECT SUM(remain) AS Total
FROM CTE
WHERE rownum = 1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.