2016-06-14 8 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文を使用せずに計算する別の方法を見つけるように求めました。それが可能かどうかは疑問です。可能であれば、計算するもう1つの方法は何ですか?

+2

SQLデータベースには通常内部順序がないため、データの順序は整っていません。そして、いいえ、情報を抽出するためのクエリが必要です。 –

+0

ありがとうございます。それは私の初めてのことです。 select文を使用しない可能性はありますか? –

+0

この正確な書式設定が必要ですか?その情報だけが必要な場合は、 'GROUP BY'集約を行うのは簡単でしょう。 –

答えて

0

技術的には、ビューを作成し、ビューを呼び出して、指定された列の値を印刷することができます。あなたのスーパーバイザーがSELECT文(DML)を使用することをアドバイスする理由がわからない場合は、に使用されているように、のデータをdbから選択してください。

0

前述のように、SELECTを使用せずにテーブルからデータを取得する方法はありません。データベースサーバーは合計を計算できるため、クライアントのすべての値を取得する必要はありません。あなたがSELECTを実行しなければならない場合は、SELECTを実行するかどうかを指定することができます。欲しいです。 技術的に言えば(アプリケーションの観点から)、あなたは 'SELECT .... ....'ステートメントを実行していません。あなたは 'EXECUTE PROCEDURE give_me_what_i_want()'を実行しており、SELECTはサーバーで行われます。例えば

:あなたはあなたではない上司に伝えることができます

> 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 dept,sum(salary) from test group by dept; 
dept       (sum) 
Operation      4000 
IT        7800 
Marketing      7400 
3 row(s) retrieved. 
> 

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を実行し、SPLを実行するだけで、SPLは魔法によって合計値を計算します;)

+0

はい、Adrian Russoがあなたに言ったように:) –

関連する問題