在sql中使用聚合函数进行SELECT [重复]

Posted

技术标签:

【中文标题】在sql中使用聚合函数进行SELECT [重复]【英文标题】:SELECT with aggregate function in sql [duplicate] 【发布时间】:2014-05-30 08:44:34 【问题描述】:

我有 2 张桌子:

CREATE TABLE cheque
  (
    ch_id          NUMBER NOT NULL ,
    ch_price       VARCHAR2 (100) ,
    ch_customer    NUMBER NOT NULL
  ) ;
ALTER TABLE cheque ADD CONSTRAINT check_PK PRIMARY KEY ( ch_id ) ;

CREATE TABLE customer
  (
    cus_id      NUMBER NOT NULL ,
    cus_name    VARCHAR2 (100) ,
  ) ;
ALTER TABLE customer ADD CONSTRAINT customer_PK PRIMARY KEY ( cus_id ) ;

ALTER TABLE cheque ADD CONSTRAINT check_customer_FK FOREIGN KEY ( ch_customer ) REFERENCES customer ( cus_id );

如何检查每个客户的价格总和?例如,如果我有一个客户 John 和 3 条 ch_price 为 10、20 和 30 的支票记录,我必须得到 John - 60。

我试过了,但没用:

Select cus_name, sum(ch_price) 
from customer, cheque
where cheque_customer=cus_id;

【问题讨论】:

您已使用 3 个不同数据库产品的名称标记此问题。您实际使用的是哪个? 我认为Oracle的数据类型VARCHAR2 这是 oracle 但我认为这并不重要 为什么 ch_price 是 VARCHAR2? “它不起作用”不是错误消息。请始终包含实际的错误消息。如果您搜索过它,您几乎会立即找到答案...... 【参考方案1】:

使用GROUP BY:

Select cus_name, sum(ch_price) as Total
from customer, cheque
where cheque_customer=cus_id
group by cus_name

【讨论】:

以上是关于在sql中使用聚合函数进行SELECT [重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 SQL 强制我在 GROUP BY 子句中重复 SELECT 子句中的所有非聚合字段? [关闭]

sql聚合函数的应用

为啥sql查询语句中的count(*)等聚合函数可以放在having后面,而不能放在where后面?

MySQL聚合函数

查询没有重复和聚合函数或 GROUP BY 子句问题。 - 重复

SQL中的WHERE子句中为啥不允许应用聚集函数呢?请通俗的解释一下或者谈谈自己的见解!