Domanda

I get this error, what's wrong? this is the query:

dbvertica=> select Sum(dbvertica.LINEORDER.l_extendedprice*dbvertica.LINEORDER.l_discount) as revenue from  
dbvertica.LINEORDER, dbvertica.DATE where dbvertica.LINEORDER.l_orderdate = 
dbvertica.DATE.d_datekey and dbvertica.DATE.d_year = '1993' and 
dbvertica.LINEORDER.l_discount between 1 and 3 and dbvertica.LINEORDER.l_quantity < 25;

and those are tables:

CREATE TABLE dbvertica.PART  ( P_PARTKEY INTEGER NOT NULL, P_NAME VARCHAR(22) NOT NULL, P_MFGR CHAR(6) NOT NULL, P_CATEGORY CHAR(7) NOT NULL,P_BRAND CHAR(9) NOT NULL, P_COLOR VARCHAR(11) NOT NULL, P_TYPE VARCHAR(25) NOT NULL, P_SIZE INTEGER NOT NULL, P_CONTAINER CHAR(10) NOT NULL);

CREATE TABLE dbvertica.SUPPLIER ( S_SUPPKEY     INTEGER NOT NULL, S_NAME CHAR(25) NOT NULL, S_ADDRESS VARCHAR(25) NOT NULL, S_CITY CHAR(10) NOT NULL, S_NATION VARCHAR(15) NOT NULL, S_REGION VARCHAR(12) NOT NULL, S_PHONE CHAR(15) NOT NULL);

CREATE TABLE dbvertica.LINEORDER ( L_ORDERKEY INTEGER NOT NULL, L_LINENUMBER INTEGER NOT NULL, L_CUSTKEY INTEGER NOT NULL, L_PARTKEY INTEGER NOT NULL, L_SUPPKEY INTEGER NOT NULL, L_ORDERDATE DATE NOT NULL, L_ORDERPRIORITY  CHAR(15) NOT NULL, L_SHIPPRIORITY   INTEGER NOT NULL,L_QUANTITY    DECIMAL(15,2) NOT NULL, L_EXTENDEDPRICE  DECIMAL(15,2) NOT NULL, L_ORDTOTALPRICE     DECIMAL(15,2) NOT NULL, L_DISCOUNT    DECIMAL(15,2) NOT NULL, L_REVENUE    DECIMAL(15,2) NOT NULL, L_SUPPLYCOST   DECIMAL(15,2)NOT NULL, L_TAX         DECIMAL(15,2) NOT NULL,L_COMMITDATE  DATE NOT NULL,L_SHIPMODE     CHAR(10) NOT NULL);

CREATE TABLE dbvertica.CUSTOMER ( C_CUSTKEY INTEGER NOT NULL,C_NAME VARCHAR(25) NOT NULL, C_ADDRESS VARCHAR(25) NOT NULL,C_CITY CHAR(10) NOT NULL, C_NATION CHAR(15) NOT NULL,C_REGION CHAR(12) NOT NULL,C_PHONE CHAR(15) NOT NULL,C_MKTSEGMENT  CHAR(10) NOT NULL);

CREATE TABLE dbvertica.DATE ( D_DATEKEY INTEGER NOT NULL, D_DATE CHAR(18) NOT NULL, D_DAYOFWEEK CHAR(8) NOT NULL, D_MONTH CHAR(9) NOT NULL, D_YEAR INT NOT NULL, D_YEARMONTHNUM INT NOT NULL, D_YEARMONTH CHAR(7) NOT NULL, D_DAYNUMINWEEK INT NOT NULL, D_DAYNUMINMONTH INT NOT NULL, D_DAYNUMINYEAR INT NOT NULL, D_MONTHNUMINYEAR INT, D_WEEKNUMINYEAR INT, D_SELLINGSEASON VARCHAR(12) NOT NULL, D_LASTDAYINWEEKFL BOOLEAN NOT NULL, D_LASTDAYINMONTHFL BOOLEAN NOT NULL, D_HOLIDAYFL BOOLEAN NOT NULL, D_WEEKDAYFL BOOLEAN NOT NULL);
È stato utile?

Soluzione

Your problem is at this row :

dbvertica.LINEORDER.l_orderdate = dbvertica.DATE.d_datekey 

as dbvertica.LINEORDER.l_orderdate is of type date and dbvertica.DATE.d_datekey is of type int.

You will need something like this :

select 
Sum(dbvertica.LINEORDER.l_extendedprice*dbvertica.LINEORDER.l_discount) as revenue from  
dbvertica.LINEORDER,
dbvertica.DATE 
where 
**TO_CHAR(dbvertica.LINEORDER.l_orderdate) = dbvertica.DATE.d_datekey**
and dbvertica.DATE.d_year = '1993' 
and dbvertica.LINEORDER.l_discount between 1 and 3 
and dbvertica.LINEORDER.l_quantity < 25;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top