我试图获取所有员工的平均薪水,然后将其与集合中所有员工的薪水进行比较,最后打印出薪水高于平均薪水的员工姓名。
但是我必须在mongodb中使用javascript。
我尝试了这一点,但能够获得结果,但是我使用了Aggregation框架,但是我想学习如何在Mongodb中使用JavaScript
db.emps.aggregate( [ {$group: {_id: "Ename", avgSal: {$avg: "$Sal"} }}])
{ "_id" : "Ename", "avgSal" : 17060 }
var avgSal = 17060
db.emps.find( {Sal: {$gt: avgSal}}, {_id:0, Ename:1})
{ "Ename" : "Joe" }
{ "Ename" : "Jose" }
{ "Ename" : "Brian" }
{ "Ename" : "Tom" }
这是我的收藏集的样子。
{ "_id" : ObjectId("5bea22e2599db4fa75aa6f3c"), "EID" : 2, "Ename" : "Jim", "Sal" : 14100 }
{ "_id" : ObjectId("5bea22e2599db4fa75aa6f3d"), "EID" : 1, "Ename" : "Joe", "Sal" : 20000 }
{ "_id" : ObjectId("5bea22e2599db4fa75aa6f3e"), "EID" : 3, "Ename" : "Bob", "Sal" : 13500 }
{ "_id" : ObjectId("5bea22e2599db4fa75aa6f3f"), "EID" : 4, "Ename" : "Amy", "Sal" : 12000 }
{ "_id" : ObjectId("5bea22e2599db4fa75aa6f40"), "EID" : 5, "Ename" : "George", "Sal" : 10000 }
{ "_id" : ObjectId("5bea22e2599db4fa75aa6f41"), "EID" : 6, "Ename" : "Kurt", "Sal" : 9000 }
{ "_id" : ObjectId("5bea22e2599db4fa75aa6f42"), "EID" : 7, "Ename" : "Saeed", "Sal" : 13000 }
{ "_id" : ObjectId("5bea22e2599db4fa75aa6f43"), "EID" : 8, "Ename" : "Jose", "Sal" : 40000 }
{ "_id" : ObjectId("5bea22e2599db4fa75aa6f44"), "EID" : 9, "Ename" : "Brian", "Sal" : 19000 }
{ "_id" : ObjectId("5bea22e2599db4fa75aa6f45"), "EID" : 10, "Ename" : "Tom", "Sal" : 20000 }
答案 0 :(得分:0)
您必须触发两个查询。
第二个查询来找出员工的工资是否超过平均工资
DECLARE
TYPE PL_TABLE_TYPE IS TABLE OF NUMBER;
TYPE RT IS RECORD (ITEM VARCHAR2(20), PL_TABLE PL_TABLE_TYPE);
TYPE TT IS TABLE OF RT;
MY_TAB TT := TT();
BEGIN
MY_TAB.EXTEND;
MY_TAB(MY_TAB.LAST).ITEM := 'ABC';
MY_TAB(MY_TAB.LAST).PL_TABLE := PL_TABLE_TYPE(40,42,33,46,48);
--> Why do you assign strings like '40' if you have a NUMBER data type?
MY_TAB.EXTEND;
MY_TAB(MY_TAB.LAST).ITEM := 'DEF';
MY_TAB(MY_TAB.LAST).PL_TABLE := PL_TABLE_TYPE(60,62,64,66,68);
FOR r IN MY_TAB.FIRST..MY_TAB.LAST LOOP
DBMS_OUTPUT.PUT(MY_TAB(r).ITEM || ' ');
FOR i IN MY_TAB(r).PL_TABLE.FIRST..MY_TAB(r).PL_TABLE.LAST LOOP
DBMS_OUTPUT.PUT(MY_TAB(r).PL_TABLE(i) || ' ');
END LOOP;
DBMS_OUTPUT.NEW_LINE;
END LOOP;
END;
尝试上面的代码,也许会对您有所帮助