2

私はSQLに非常に慣れておらず、学校でクラスを受講していますが、非常に基本的です。どうにかしてリンクしたいテーブルが 2 つありますが、どこから始めればよいかわかりません。その月の従業員と完了したサービス コールを一覧表示する月のテーブルがあります。各従業員は、通話ごとに、また通話の種類によって異なる支払いを受けます。そのため、各従業員、サービス コールの種類をリストするコミッション テーブルがあり、列のデータは、各従業員がさまざまな種類の通話に対して支払う金額です。このようなことができるように、各テーブルの従業員IDをリンクしたい...

SELECT sum(TypeOfCall) as "Total Commission" 
from December
where TypeOfCall='abc' and EmployeeID='John';

MothTableただし、TypeOfCall列に格納されているデータは、' abc' や ' ' などのcdf変数です。各変数はリストされ、CommissionsTable に値が与えられます。にリストされている値を使用して、TypeOfCall列の合計を取得するにはどうすればよいですか?MonthTableCommissionsTable

実際のテーブル、列、および型は次のとおりです。

CREATE TABLE "December" (
    "EmployeeID" INTEGER NOT NULL,
    "InvoiceType" VARCHAR (6),
    "DR" VARCHAR (8),
    "TypeOfCall" VARCHAR (6),
    "CommissionType" VARCHAR (6),
    "Date DD/MM/YY" VARCHAR (10),
    "InvoiceNumber" INTEGER,
    "InvoiceAmount" FLOAT (6),
    "KeyCode" VARCHAR(20)
)

と...

CREATE TABLE "Commissions" (
    "EmployeeID" VARCHAR(25) PRIMARY KEY  NOT NULL UNIQUE,
    "T3" INTEGER NOT NULL,
    "T5" INTEGER NOT NULL,
    "T7" INTEGER NOT NULL,
    "7B" INTEGER NOT NULL,
    "Other10" INTEGER NOT NULL,
    "Other12" INTEGER NOT NULL,
    "Other13" INTEGER NOT NULL,
    "Other14" INTEGER NOT NULL,
    "Other15" INTEGER NOT NULL
)
4

2 に答える 2

0

本当に必要なSUM(CommissionsTable.value)のはINNER JOIN、月のテーブルとCommissionsTable.

SELECT
  December.TypeOfCall,
  SUM(CommissionsTable.value) AS "Total Commission"
FROM
  December
  /* Substitute the correct column name for ComissionsTable.TypeOfCall */
  INNER JOIN CommissionsTable WHERE December.TypeOfCall = CommissionsTable.TypeOfCall
WHERE
  December.TypeOfCall = 'abc' 
  AND EmployeeID = 'John'
/* GROUP BY needed if you were retrieving more than just 'abc' */
GROUP BY December.TypeOfCall

ただし、月ごとに個別のテーブルを用意するのは適切ではありません。代わりに、コールをリストするテーブルには、各コールの日付値と、そのタイプおよびEmployeeID. 何かのようなもの:

CREATE TABLE calls (
  EmployeeID VARCHAR(32) NOT NULL,
  TypeOfCall CHAR(3) NOT NULL,
  CallDate INTEGER NOT NULL
)
于 2012-12-24T01:10:50.823 に答える
0

コール テーブル レコードを 1 つまたは複数のテーブルに格納するかどうかは、レコード数とデータ保存期間によって異なります。アカウントが非常に大きい場合は、パーティション テーブルまたは複数テーブルが適しています。12 月にインデックスを作成します。TypeOfCall はパフォーマンスを調整する場合があります。

于 2012-12-24T03:45:48.350 に答える