【问题标题】:How to sum() values in mySQL that are related to a specific ID?如何在 mySQL 中求和()与特定 ID 相关的值?
【发布时间】:2016-12-21 01:50:04
【问题描述】:

我想在一个表格中显示学生支付的所有款项。 学生可以参加多个课程,因此我需要知道属于每门课程的付款总和。

I've tried this:

SELECT      usuarios.userID, usuarios.userEmail, usuarios.docVerificada, 
            pagos.cursoID, pagos.pagoMonto,
            SUM(pagos.pagoMonto)

FROM usuarios LEFT JOIN pagos
ON usuarios.userID = pagos.userID

WHERE pagos.estadoPago = 1

GROUP BY usuarios.userEmail

但它会输出所有付款,每行一个,但我想根据它们的 cursoID 对它们进行分组。

这些是涉及的表格:

CREATE TABLE pagos (
    pagoID int unsigned not null auto_increment primary key,
    userID int not null,
    cursoID int null,
    estadoPago int(1) not null DEFAULT '0'
    pagoMonto int null
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE usuarios(
    userID int unsigned not null auto_increment primary key,
    userEmail char(50) null
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

这是我得到的实际输出:

这些是没有任何分组或总和的结果:

预期的结果是:

UserID 16 -- cursoID 15 -- 支付总额 23

UserID 16 -- cursoID 16 -- 付款总计 77(总和应该只有 24, 26和27)

等等……

【问题讨论】:

  • I want to group them according to their cursoID -- 你试过在group by 子句中添加cursoID 吗?

标签: mysql join sum


【解决方案1】:

您应该在查询中的Group By 中包含pagos.cursoID

SELECT      
    usuarios.userID, usuarios.userEmail, usuarios.docVerificada, 
    pagos.cursoID, pagos.pagoMonto, SUM(pagos.pagoMonto) as Total
FROM 
   usuarios 
INNER JOIN 
   pagos
ON 
   usuarios.userID = pagos.userID
WHERE 
    pagos.estadoPago = 1
GROUP BY 
    usuarios.userID, pagos.cursoID

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    • 2018-09-29
    • 2018-09-27
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    相关资源
    最近更新 更多