【问题标题】:Trying to get sum of specific column cells for last 4 rows sum in MySQL试图在 MySQL 中获取最后 4 行总和的特定列单元格的总和
【发布时间】:2022-01-18 15:27:44
【问题描述】:

我正在尝试获取 MySQL 中表的最后 4 行的容量列的总和。

我的桌子是:

我的 SQL 是:

SELECT
tid,
sum(capacity)
FROM captable 
ORDER BY tid DESC LIMIT 4

结果给出不同的总和。应该是 150+200+250+300 = 900。

我正在寻找红色圆圈数字的总和。

【问题讨论】:

  • 你有什么模式可以识别最后 4 条记录吗?
  • 您的查询包含您需要的 4 个值的总和以及 tid - 您想在此处查看 tid 的确切值,为什么?
  • 嗨,斯图,你是对的。我清除了tid。
  • 我需要最后记录以确定总容量。每小时增加 4 行。所以最后 4 行总是给出最新的总容量信息。

标签: mysql sql


【解决方案1】:

您可以使用子查询订购并在外部查询中应用SUM。这个查询考虑到 tid 是 auto_inrement:

SELECT sum(t1.capacity)
FROM ( SELECT tid,capacity
       FROM captable
       ORDER BY  tid DESC LIMIT 4
      ) as t1 ;

结果:

last_4_rows_sum
900

Demo:

【讨论】:

  • 感谢厄格斯特。这也是解决方案。
【解决方案2】:

您可以使用子查询,


SELECT tid,
sum(capacity)
from
(SELECT
tid,
capacity
FROM captable 
ORDER BY tid DESC LIMIT 4) tbl;

如果需要,您也可以使用 row_number(),

SELECT tid,
sum(capacity)
from
(SELECT
tid,
capacity,
row_number() over(order by capacity desc) as rnk
FROM captable) tbl where rnk between 1 and 4;

【讨论】:

  • 嗨吉姆,第一个解决了我的问题。非常感谢。
【解决方案3】:

您在 SELECT 语句中提供了tid, sum(capacity),这意味着您将获得每个存在的 tid 的总和。

由于每个 tid 显然在您的数据集中仅存在一次(至少在您的图像中),我假设您从表中返回相同的值。

如果你对总和感兴趣,不管是哪个 tid,那么只需从语句中删除 tid 列,如下所示:

SELECT
sum(capacity)
FROM captable 
ORDER BY tid DESC LIMIT 4

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多