データベース管理システムで、問題のクエリを記述する必要があります。 私は4つの問題を抱えています。そのうちの3つを解決し、最後の問題に固執しました。SQLite - nullの場合は0を返します。
詳細:
- チヌークデータベース (https://chinookdatabase.codeplex.com/)のバージョン1.4を使用します。チヌークファイルとディレクトリ内
- SQLiteのDBブラウザ
- チヌークSqliteをAutoIncrementPKs.sqliteファイルには、私が
問題文に取り組んでいますデータベースです: は、クエリを書きます彼らがサポート担当者であった顧客請求書を介して持ち込まれた金額に基づいて、従業員のランク付けされたリストを生成する。 ID(e_id)、名(e_first名)、姓(e_last_name)、タイトル(すべての従業員をサポートしていないユーザーも含む)の結果セット(下図参照) (e_title)、および請求書合計(total_invoices)を含む。行は、請求書の合計(最大のもの)、次に姓(アルファベット順)、最初の名前(アルファベット順)でソートされます。請求書の合計は、ドル記号($)で始まり、小数点以下2桁(必要に応じて丸められています)でなければなりません。請求書のない従業員の場合は、NULLではなく、$ 0.00を出力する必要があります。 SQLiteのIFNULL、ROUND、およびPRINTF関数を調べると便利です。
所望の出力:
マイクエリ:
Select Employee.EmployeeId as e_id,
Employee.FirstName as e_first_name,
Employee.LastName as e_last_name,
Employee.Title as e_title,
'$' || printf("%.2f", Sum(Invoice.Total)) as total_invoices
From Invoice Inner Join Customer On Customer.CustomerId = Invoice.CustomerId
Inner Join Employee On Employee.EmployeeId = Customer.SupportRepId
Group by Employee.EmployeeId
Having Invoice.CustomerId in
(Select Customer.CustomerId From Customer
Where Customer.SupportRepId in
(Select Employee.EmployeeId From Employee Inner Join Customer On Employee.EmployeeId = Customer.SupportRepId)
)
order by sum(Invoice.Total) desc
マイ出力:
ご覧のとおり、最初の3行は正しいですが、従業員に請求書がないためEmployeeIDがnullであるため、後の行は印刷されません。
この状態で行を印刷するにはどうすればよいですか? 私はを試してみました。合体とifnullが機能しますが、動作させることができません。
誰かが私のクエリを修正して一致する解決策を得ることができたら、本当に感謝します。 ありがとう!
P.S:これはチヌークデータベース
ありがとうございました。出来た :) – user3397557