【问题标题】:Count in the SUM SQL在 SUM SQL 中计数
【发布时间】:2017-11-08 05:08:18
【问题描述】:

我有如下的sql函数:

SELECT
    SUM(3 * tb_spp.bulanan_spp ),
    COUNT(tb_bulan.id) AS JUMLAH, 
    SUM( count(tb_bulan.id) * tb_angsuran_spp.nominal_spp ), 
SUM( (3 * tb_spp.bulanan_spp) - (3 * tb_angsuran_spp.nominal_spp) ) as SPP 
FROM tb_spp, tb_angsuran_spp, tb_bulan 
where tb_spp.id_siswa = tb_angsuran_spp.id_siswa and tb_spp.id_siswa = '1' 
and tb_bulan.id = tb_angsuran_spp.id_bulan 
and tb_bulan.id between '1' and '2'

但是当我运行时出现错误信息'# 1111 - Invalid use of group function'

是什么原因,如何解决?

【问题讨论】:

  • 这个查询充满了问题。您可以先告诉我们您使用的是哪个数据库。
  • 我检查错后是命令'SUM (count (tb_bulan.id) * tb_angsuran_spp.nominal_spp)' 应该如何?

标签: sql count sum


【解决方案1】:

sum(count()) 通常是不允许的。我还会对查询进行一些其他更改:

SELECT SUM( 3 * s.bulanan_spp ),
       count(b.id) as JUMLAH, 
       SUM(a.nominal_spp ), 
       SUM( (3 * s.bulanan_spp) - (3 * a.nominal_spp) ) as SPP 
FROM tb_spp s JOIN
     tb_angsuran_spp a
     on s.id_siswa = a.id_siswa join
     tb_bulan b
     on b.id = a.id_bulan 
where s.id_siswa = 1 and 
      b.id between 1 and 2;

注意事项:

  • 从不FROM 子句中使用逗号。 始终使用正确、明确的JOIN 语法。
  • 表别名使查询更易于编写和阅读。
  • ID 通常是数字;因此我删除了单引号(它们适用于字符串)。

我不确定您的总和和计数是否会产生正确的答案。如果没有,请问另一个问题,包括样本数据和期望的结果。这个答案解决了这个问题中的语法问题。

【讨论】:

    猜你喜欢
    • 2016-06-21
    • 1970-01-01
    • 2018-06-25
    • 2021-08-12
    • 1970-01-01
    • 2017-03-06
    • 2019-09-01
    • 1970-01-01
    相关资源
    最近更新 更多