Oracle查询select语句 - count,sum,order by,group by

时间:2016-02-17 03:12:08

标签: sql oracle

我正在尝试Oracle SQL作业分配,我似乎无法理解......有人可以帮我一把吗?我不是SQL中的总菜鸟,但这个看起来太复杂了我无法理解。

提示: 编写一个SELECT语句,为每个包含三列的总帐帐号返回一行:     General_Ledger_accounts表中的account_description列     Invoice_Line_Items表中具有相同account_number的条目计数     Invoice_Line_Items表中具有相同account_number的订单项金额之和 过滤结果集以仅包括计数大于1的行;按帐户描述对结果集进行分组(我假设它们的意思是Account_Description);并按行项目金额的总和按降序对结果集进行排序。

表格详情

SQL> desc general_ledger_accounts
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ACCOUNT_NUMBER                            NOT NULL NUMBER
 ACCOUNT_DESCRIPTION                       NOT NULL VARCHAR2(50)

1 个答案:

答案 0 :(得分:0)

首先,在您的FROM子句中,您需要使用GENERAL_LEDGER_ACCOUNTS的条件将INVOICE_LINE_ITEMS表与GENERAL_LEDGER_ACCOUNTS.ACCOUNT_NUMBER = INVOICE_LINE_ITEMS.ACCOUNT_NUMBER表一起加入。

然后(在此之上),在您的SELECT子句中,指出您需要的3列。

您不需要WHERE子句,因为您正在考虑所有行。

使用GROUP BY子句指示要聚合的列。由于您需要为每个COUNT汇总(SUMACCOUNT_NUMBER),因此您只需要ACCOUNT_NUMBER中的GROUP BY

接下来,使用HAVING过滤组。在您的情况下,您希望群组HAVING一个COUNT超过特定阈值。

最后,使用ORDER BYSUM的{​​{1}}结尾顺序对这些群组进行排序。

* SPOILER:首先尝试自己动手*

DESC