簡體   English   中英

如何從MySQL中選擇總和(最大剩余(x + y + z))以捕獲總和(1200 + 1300 + 1400)

[英]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;

SQL小提琴演示

結果:

| TOTALOFMAXREMAINS |
---------------------
|              3900 |

子查詢:

SELECT MAX(remain) AS MaxRemain
FROM item_new_company
GROUP BY user

使用GROUP BY userMAX(remain) ,將為您提供每個userremain最大值,然后在外部查詢中, 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;

SQL小提琴演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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