我正在對Gerrit進行一些擴展。我有以下查詢來從gerrit DB獲取特定ACCOUNT_ID的TOTAL COMMITS,TOTOAL REVIEW COMMENTS ...等。每個帳戶的運行計數查詢
with
changeids as
(select change_id from PATCH_SETS where UPLOADER_ACCOUNT_ID=1001961),
patchcommentstoothers as
(select count(*) c from patch_comments where AUTHOR_ID!=1001961 AND Change_id in (select change_id from changeids)),
ownerchanges as
(select count(*) c from changes where owner_account_ID=1001961 and OPEN='Y'),
changemessages as
(select count(*) c from change_messages where AUTHOR_ID=1001961 and change_id not in (select change_id from changeids))
select pcto.c TOT_PATCH_COMMENTS, oc.c TOT_CHANGES, cm.c TOT_CHANGE_MESSAGES
from patchcommentstoothers pcto, ownerchanges oc, changemessages cm;
現在用上面的查詢我可以得到一個用戶的三個計數。我想爲所有ACCOUNT_ID運行上述查詢。就像爲每個帳戶運行此查詢(而不僅僅是針對此處的1001961)並一次性爲所有帳戶取回所有記錄。
ACCOUNT表有以下欄目:
"REGISTERED_ON" TIMESTAMP (6) NOT NULL ENABLE,
"FULL_NAME" VARCHAR2(255 BYTE),
"PREFERRED_EMAIL" VARCHAR2(255 BYTE),
"CONTACT_FILED_ON" TIMESTAMP (6),
"MAXIMUM_PAGE_SIZE" NUMBER(6,0) DEFAULT 0,
"SHOW_SITE_HEADER" CHAR(1 BYTE) DEFAULT 'N',
"USE_FLASH_CLIPBOARD" CHAR(1 BYTE) DEFAULT 'N',
"DOWNLOAD_URL" VARCHAR2(20 BYTE),
"DOWNLOAD_COMMAND" VARCHAR2(20 BYTE),
"COPY_SELF_ON_EMAIL" CHAR(1 BYTE) DEFAULT 'N',
"DATE_FORMAT" VARCHAR2(10 BYTE),
"TIME_FORMAT" VARCHAR2(10 BYTE),
"INACTIVE" CHAR(1 BYTE) DEFAULT 'N',
"ACCOUNT_ID" NUMBER(11,0) DEFAULT 0
我寧願不使用的程序。
P.S. - 我吮吸Oracle SQL。
不要在創建表格/視圖等時明確引用列,它會導致更多的問題,而不是它的價值。如果你不引用它們,那麼所有東西都被認爲是大寫字母(不過你可以輸入),而且你不需要做任何事情。它也節省了很多打字。 – Ben