【问题标题】:SELECT the requested cell by using MAX() and SUM() functions使用 MAX() 和 SUM() 函数选择请求的单元格
【发布时间】:2011-12-15 03:29:13
【问题描述】:

我正在尝试创建一个返回 MAX 存款总额的帐户名称的查询。存款可以每天添加,但总和是每月。

2 个表:

帐户(ID、名称)

存款(ID、日期、存款)

我需要获取当月存款金额最大的账户名称。

例如:

帐户

1 名称1

2 名称2

3 名称3

4 名称4

存款

1 12 2010-01-01

1 13 2010-01-02

2 30 2010-02-02

3 15 2010-02-02

4 10 2010-02-03

1 30 2010-02-02

结果应该是 Name1。

到目前为止,我创建了一个查询,该查询返回一个表,其中包含每个帐户每个月的总和:

SELECT *
FROM
(
SELECT SUM(Deposits.deposit) as SumMonth , Deposits.account_id as Id
FROM Deposits
GROUP BY Deposits.account_id, MONTH(Deposits.Date) 
) 
as A INNER JOIN Accounts ON Accounts.id = A.Id

这是查询返回:

25 1 1 姓名1
30 1 1 姓名1
30 2 2 姓名2
15 3 3 姓名3
10 4 4 姓名4

有什么想法吗??

【问题讨论】:

  • 您的结果有两行 SumMonth = 30 = max。为什么结果应该只有Name1
  • @BogdanSahlean - 发送您的评论,没错,但在值相等的情况下显示哪个名称没有任何意义。

标签: sql sql-server


【解决方案1】:

你自己已经完成了第一步。 现在使用这个查询,Order By SumMonth DESC。获得 TOP 1 您将获得第一名。

喜欢:

SELECT TOP 1 *
FROM
(
SELECT SUM(Deposits.deposit) as SumMonth , Deposits.account_id as Id
FROM Deposits
GROUP BY Deposits.account_id, MONTH(Deposits.Date) 
) 
AS a INNER JOIN Accounts ON Accounts.id = a.Id
ORDER BY Accounts.SumMonth DESC

【讨论】:

    猜你喜欢
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    相关资源
    最近更新 更多