0

SQL の割り当てに問題があります。

私のデータで 3000.00 ドル以上稼いだすべての従業員をリストする必要があります。

これらは私のテーブルです

 EMPLOYEE Table  
    EMP_NUM EMP_NAME                JOB_CLASS  
        101 John G. News            Database Designer
        102 David H. Senior         Systems Analyst
        103 June E. Arbough         Electrical Engineer
        104 Anne K. Ramoras         Systems Analyst
        105 Alice K. Johnson        Database Designer
        106 William Smithfield      Programmer
        107 Maria D. Alonzo         Programmer
        108 Ralph B. Washington     Systems Analyst
        111 Geoff B. Wabash         Clerical Support
        112 Darlene M. Smithson     DSS Analyst
        113 Delbert K. Joenbrood    Applications Designer
        114 Annelise Jones          Applications Designer
        115 Travis B. Bawangi       Systems Analyst
        118 James J. Frommer        General Support

ASSIGN Table
EMP_NUM  PROJ_NUM  HOURS
101      15        19.4
102      15        23.8
103      15        23.8
105      15        35.7
106      15        12.6
104      18        32.4
112      18        44
114      18        24.6
118      18        45.3
104      22        48.4
105      22        64.7
106      22        12.8
111      22        22
113      22        23.6
101      25        56.3
107      25        24.6
108      25        23.6
112      25        41.4
114      25        33.1
115      25        45.8
118      25        30.5

JOB Table
JOB_CLASS               CHG_HOUR
Applications Designer   48.1
Clerical Support        26.87
Database Designer       105
DSS Analyst             45.95
Electrical Engineer     84.5
General Support         18.36
Programmer              35.75
Systems Analyst         96.75

複数のプロジェクトに取り組んでいるすべての従業員をリストしている前の質問について、私はこれが好きでした

select COUNT (a.PROJ_NUM), e.EMP_NAME
from EMPLOYEE e, ASSIGN a
where e.EMP_NUM = a.EMP_NUM
Having COUNT (a.PROJ_NUM) >= 2
group by e.EMP_NAME;

このコードは私が欲しかったものを与えてくれました

私が今苦労しているのは、3000.00以上稼いだ人のリストを取得することです

だから私はこれが好きだった

select COUNT (a.HOURS * j.CHG_OUR), e.EMP_NAME
from EMPLOYEE e, ASSIGN a. JOB j
where j.JOB_CLASS = e.JOB_CLASS
and e.EMP_NUM = a.EMP_NUM
Having COUNT (a.HOURS * j.CHG_OUR) >= 3000
group by e.EMP_NAME;

しかし、今回は、このコードは私が望んでいたものを提供しませんでした

このようなエラーメッセージのみを出力しました

ORA-00933: SQL command not properly ended
00933. 00000 -  "SQL command not properly ended"
*Cause:    
*Action:
Error at Line: 60 Column: 26

直し方わかる方回答お願いします

ありがとうございました

4

3 に答える 3

1
  1. HAVING ステートメントは、GROUP BY の前ではなく後に配置する必要があります。
  2. COUNT() 集計を使用したくない場合は、SUM() が必要です。

このようなもの:

 select SUM (a.HOURS * j.CHG_OUR), e.EMP_NAME
            from EMPLOYEE e, ASSIGN a. JOB j
            where j.JOB_CLASS = e.JOB_CLASS
            and e.EMP_NUM = a.EMP_NUM
            group by e.EMP_NAME
            Having SUM (a.HOURS * j.CHG_OUR) >= 3000;
于 2013-03-05T01:12:16.107 に答える
0

これはどうですか:

select COUNT (a.HOURS * j.CHG_OUR), e.EMP_NAME
from EMPLOYEE e, ASSIGN a. JOB j
where j.JOB_CLASS = e.JOB_CLASS
and e.EMP_NUM = a.EMP_NUM
group by e.EMP_NAME;
Having COUNT ((a.HOURS * j.CHG_OUR) >= 3000)

カウントの周りに括弧のセットを追加しました。

于 2013-03-05T01:25:20.530 に答える
0

私はあなたがこれを行うことができると思います:

select SUM(a.HOURS * j.CHG_OUR), e.EMP_NAME
from EMPLOYEE e, ASSIGN a, JOB j
where j.JOB_CLASS = e.JOB_CLASS
and e.EMP_NUM = a.EMP_NUM
group by e.EMP_NAME
Having sum(a.HOURS * j.CHG_OUR) >= 3000;
于 2013-03-05T01:13:38.550 に答える