2016-06-14 72 views
0

我想問是否有可能不使用SELECT語句計算數據? 例如:在不使用SELECT語句的情況下計算SQL中的數據?

Dept  salary 
IT   4000 
IT   3800 
Marketing 3500 
Marketing 3900 
Operation 4000 

在訂單中已有的數據,但有可能走出這個輸出?

Dept  salary 
IT   4000 
IT   3800 
Total:2 Total:7800 

Marketing 3500 
Marketing 3900 
Total:2 Total:7400 

Operation 4000 
Total:1  Total:4000 

沒有使用SELECT語句?

我的主管讓我找到另一種計算方式,而不使用select語句。我想知道這是否可能?如果可能的話,另一種計算方法是什麼?

+2

由於SQL數據庫通常不具有內部順序,因此數據尚未按順序排列。不,你需要查詢來提取信息。 –

+0

謝謝。這是我第一次。有沒有可能不使用select語句? –

+0

你需要這種確切的格式嗎?如果你只是想要這些信息,那麼做一個「GROUP BY」聚合很容易。 –

回答

0

從技術上講,您可以創建視圖,調用視圖並在給定列中打印值。不知道爲什麼你的主管會建議不要使用SELECT語句(DML),因爲這用於選擇匹配來自數據庫的數據。

0

如前所述,沒有辦法從沒有SELECT的表中獲取數據,數據庫服務器可以爲您計算總和,因此您不必檢索客戶端中的所有值並執行那裏的總和,但不管怎麼樣,你仍然必須做一個SELECT

現在誰做的SELECT是另一回事,你可以編寫一個簡單的函數或者spl來爲你運行SELECT並返回值想。從技術上講(從應用程序的角度來看)你並沒有做'SELECT ....'語句,你正在執行'執行程序',並且在服務器中完成SELECT操作。

例如:

D:\infx\ids12>dbaccess stores7 - 
Database selected. 
> create table test (emp char(20),dept char(20), salary int); 
Table created. 
> insert into test values ('emp1','IT',3800); 
1 row(s) inserted. 
> insert into test values ('emp2','IT',4000); 
1 row(s) inserted. 
> insert into test values ('emp3','Marketing',3900); 
1 row(s) inserted. 
> insert into test values ('emp4','Marketing',3500); 
1 row(s) inserted. 
> insert into test values ('emp5','Operation',4000); 
1 row(s) inserted. 
> 

假設這是你所追求的:

> select dept,sum(salary) from test group by dept; 
dept       (sum) 
Operation      4000 
IT        7800 
Marketing      7400 
3 row(s) retrieved. 
> 

,你可以這樣做:

> create procedure get_salaries(vdept char(20)) returning int; 
> return (select sum(salary) from test where dept matches vdept); 
> end procedure; 

Routine created. 

> execute procedure get_salaries('IT'); 
(expression) 
     7800 
1 row(s) retrieved. 

> execute procedure get_salaries('Operation'); 
(expression) 
     4000 
1 row(s) retrieved. 

> execute procedure get_salaries('Marketing'); 
(expression) 
     7400 
1 row(s) retrieved. 

> execute procedure get_salaries('*'); 
(expression) 
     19200 
1 row(s) retrieved. 
> 

你可以告訴你的上司,你是不是做一個SELECT,只是運行SPL,SPL通過魔法計算總和值;)

+0

是的就像阿德里安Russo告訴你:) –

相關問題