我正在尝试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)
答案 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
汇总(SUM
和ACCOUNT_NUMBER
),因此您只需要ACCOUNT_NUMBER
中的GROUP BY
。
接下来,使用HAVING
过滤组。在您的情况下,您希望群组HAVING
一个COUNT
超过特定阈值。
最后,使用ORDER BY
按SUM
的{{1}}结尾顺序对这些群组进行排序。
* SPOILER:首先尝试自己动手*
DESC