在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查询语句中的count(*)等聚合函数可以放在having后面,而不能放在where后面?