2

我对 sql 很陌生,在学校上课,但它非常基础。我有 2 个表我想以某种方式链接在一起,但不知道从哪里开始。我有一个月表,列出了该月的员工和已完成的服务电话。每个员工的每次通话和通话类型的报酬都不同。所以我有一个佣金表,其中列出了每个员工、服务电话的类型,并且列中的数据是每个员工为每种不同类型的电话所做的美元金额。我想链接每个表中的员工 ID,以便我可以做这样的事情......

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

但是存储在列中的数据MothTableTypeOfCall一个变量,如“ abc”或“ cdf”,每个变量都在 CommissionsTable 中列出并给出了一个值。如何使用TypeOfCall列中MonthTable列出的值获得列的总和CommissionsTable

实际的表、列和类型如下:

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

调用表存储记录在一张或多张表中取决于记录的数量和数据保存时间,如果acount非常非常大,分区表或多表是不错的选择。在 December.TypeOfCall 上创建索引可能会调整性能。

于 2012-12-24T03:45:48.350 回答