如何汇总联接表中的列?

哈迪·兰吉(Hadi Ranji)

我有两个表(学生和帐户)
每个学生在学生表中都有一条记录,但可能在帐户表中有一条以上的记录。
我需要对帐户表中的一列进行汇总,并按学生表中的学生代码分组

我已经编写了以下查询,但是当我使用GROUP BY命令时,它返回了一个错误:

select students.id,students.stcode,students.stname,account.stcode,
       sum(cast ((account.price) AS INT)) OVER () AS PriceTotal
from students 
inner join account on students.stcode=account.stcode 
group by students.stcode

错误消息:
Column 'students.id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause

伦纳特

您需要按不属于聚合的所有列进行分组。就是说,如果students.stname在功能上依赖于students.stcode(即students.stcode是唯一的),则可以将一个诸如max的聚合应用到students.stcode上。由于account.stcode = students.stcode可以删除。我不确定over子句在这里应该做什么,所以我删除了那一个,留给我们:

select students.stcode, max(students.stname) as stname
     , sum(cast (account.price AS INT)) AS PriceTotal
from students 
join account 
    on students.stcode=account.stcode 
group by students.stcode

另一种选择是在group by子句中包含students.stname:

select students.stcode, students.stname
     , sum(cast (account.price AS INT)) AS PriceTotal
from students 
join account 
    on students.stcode=account.stcode 
group by students.stcode, students.stname

如果您使用支持窗口功能的DBMS(不使用标记了帖子的MySQL),则不需要按以下条件分组:

select students.stcode, students.stname
     , sum(cast (account.price AS INT)) over () AS PriceTotal
from students 
join account 
    on students.stcode=account.stcode 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

联接两个表中存在的数据并汇总未联接的数据

来自分类Dev

如何在带有子查询的联接中使用联接表中的列

来自分类Dev

联接表以查找列中的缺失值

来自分类Dev

如何汇总Postgres中多个表的出现

来自分类Dev

从联接表中添加列

来自分类Dev

汇总不同表中每个值的列

来自分类Dev

汇总3个表中的列

来自分类Dev

Bookshelf.js-如何从联接表中获取列?

来自分类Dev

仅从联接表中获取指定的列

来自分类Dev

汇总单个表中多个列的计数

来自分类Dev

PostgreSQL-如何在汇总表和联接表的输出中显示空值?

来自分类Dev

根据oracle中的列值联接表

来自分类Dev

如何从Postgres中的联接表中汇总子项?

来自分类Dev

SQL-从联接表中检索列

来自分类Dev

如何汇总数据表中的列并使用DataTable.Compute检查?

来自分类Dev

当antd表中的列值更改时,如何立即更新汇总值?

来自分类Dev

如何在子查询的联接中使用联接表中的列

来自分类Dev

如何联接2个表并使用两个表中的公共列选择特定列

来自分类Dev

如何通过联接表从多个表中获取所有列

来自分类Dev

联接表以查找列中的缺失值

来自分类Dev

从联接表中获取最高的列值

来自分类Dev

从每个表中按列顺序联接

来自分类Dev

汇总不同表中每个值的列

来自分类Dev

从联接表中添加列

来自分类Dev

汇总3个表中的列

来自分类Dev

如何联接表并生成列总和?

来自分类Dev

仅从联接表中获取指定的列

来自分类Dev

Codeigniter 模型:汇总、联接、分组在多个表中

来自分类Dev

如何根据不同的列在 Mysql 中连接两个表并汇总它们的列