我是Oracle的新手,我在计算多个值方面遇到了一些麻烦
计算每本书的副本数量(Copy_num),每本书的书籍副本数量(Date_out),保留的数量(Held_for_CID)以及可用于结帐的数量。
这可以通过一个查询完成吗?无法弄清楚如何一次计算多个变量。
create table BOOK_COPY
(Copy_Num number(5),
Bookid number(5),
out_to_CID number(6),
Date_Out date,
Date_Due date,
Held_Until date,
held_for_CID number(6),
CONSTRAINT PKCOPY PRIMARY KEY (Copy_Num,Bookid),
CONSTRAINT FKCID FOREIGN KEY (out_to_CID) references CUSTOMER,
CONSTRAINT FKHeld FOREIGN KEY (held_for_CID) references CUSTOMER,
CONSTRAINT FKBookid FOREIGN KEY (Bookid) references BOOK);
答案 0 :(得分:0)
我的猜测是你需要像
这样的东西SELECT bookID,
COUNT( copyNum ) number_of_copies,
SUM( CASE WHEN date_out IS NOT NULL
THEN 1
ELSE 0
END ) number_copies_out,
SUM( CASE WHEN held_for_CID IS NOT NULL
THEN 1
ELSE 0
END ) number_copies_reserved
FROM book_copy
GROUP BY bookID
GROUP BY bookID
后,您可以根据需要添加任意数量的聚合函数(SUM
,COUNT
等)。要计算已删除和保留的副本数量,我使用CASE
语句,如果相关字段为NOT NULL
,则返回1,然后SUM
将所有1的字段合计为1。