1
SELECT B.TITLE, TO_CHAR(SUM((B.COST*OI.QUANTITY)-OI.PAIDEACH), '$999.99')
AS "Profit"
FROM ORDERS O JOIN ORDERITEMS OI
on o.order# = oi.order#
JOIN BOOKS B ON OI.ISBN = B.ISBN
WHERE O.ORDER# = 1002;

目標

注文 1002 で購入した本が生み出す利益の合計額を決定します。本のタイトルと利益を表示します。利益は、ドル記号と小数点以下 2 桁を表示するように書式設定する必要があります。顧客が完全な小売価格を支払わない可能性があり、注文された各アイテムには複数のコピーが含まれる可能性があることを考慮してください.

問題

したがって、上記のコードを実行しようとすると、「単一グループのグループ関数ではありません」というエラーが表示されます。ステートメント全体とタイトルをグループ化しようとしましたが、これを行うと、 「期待される場所に FROM キーワードが見つかりません」order#というエラーが表示されます。

4

3 に答える 3

1

問題の一部は、次のGROUP BY句が欠落していることです。

SELECT B.TITLE, 
  TO_CHAR(SUM((B.COST*OI.QUANTITY)-OI.PAIDEACH), '$999.99') AS "Profit"
FROM ORDERS O 
JOIN ORDERITEMS OI
  on o.order# = oi.order#
JOIN BOOKS B 
  ON OI.ISBN = B.ISBN
WHERE O.ORDER# = 1002
GROUP BY B.TITLE;

集計関数を使用している場合は常にGROUP BY、選択リストにはあるが集計関数には含まれていない列に を含める必要があります。したがってGROUP BY B.TITLE、クエリに a を追加する必要があります。

于 2013-03-19T22:57:06.777 に答える
0

select 句に sum() があり、group by 句がありません。これにより、クエリがクラッシュしました。

于 2013-03-19T22:56:49.953 に答える
0

group by次の句が必要です。

SELECT B.TITLE, TO_CHAR(SUM((B.COST*OI.QUANTITY)-OI.PAIDEACH), '$999.99')
AS "Profit"
FROM ORDERS O JOIN ORDERITEMS OI
on o.order# = oi.order#
JOIN BOOKS B ON OI.ISBN = B.ISBN
WHERE O.ORDER# = 1002
group by b.title

select句に aが含まれているため、問題が発生sum()します。これは集計クエリを示唆しています。がないgroup by場合、SQL は 1 行が返されると想定します。b.titleただし、集計されていないフィールドがあるため、エラーが発生します。

于 2013-03-19T22:57:14.463 に答える