java获取所选类别中所有实体的平均值
我有一张公司表,另一张表中有一家公司的员工表。java获取所选类别中所有实体的平均值,java,mysql,sqlite,jsp,jakarta-ee,Java,Mysql,Sqlite,Jsp,Jakarta Ee,我有一张公司表,另一张表中有一家公司的员工表。 我正在尝试获取用户选择查看详细信息的公司的平均工资。 在下面的JSP中,我显示了所选公司的所有员工,在底部,我试图显示所有员工的平均工资。 如您所见,有一个sum命令,它将for循环中每个迭代的工资相加,然后给出平均值 我希望在companyDAO或company.java文件中执行此操作,并在此处调用该方法(我正在执行此操作,但得到的结果为零) 是的,在company.getEmployees()中计算该值,然后将其作为属性添加到请求中。您不应
我正在尝试获取用户选择查看详细信息的公司的平均工资。
在下面的JSP中,我显示了所选公司的所有员工,在底部,我试图显示所有员工的平均工资。
如您所见,有一个
sum
命令,它将for循环中每个迭代的工资相加,然后给出平均值我希望在companyDAO或company.java文件中执行此操作,并在此处调用该方法(我正在执行此操作,但得到的结果为零)
是的,在
company.getEmployees()
中计算该值,然后将其作为属性添加到请求中。您不应该在JSP中编写Java代码。搜索JSP EL教程,例如@ScaryWombat,请您给出一个答案,以便我能够理解您所说的内容,感谢您告诉我您不理解的内容。您可以看到我已经尝试过的内容,并且返回零,但如果我将其放入循环中,我会得到结果。这就是我所理解的,其余的我都不知道。
<%@page import="data.Employee"%>
<%@page import="data.Company"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<jsp:useBean id="company" type="data.Company" scope="request"/>
<% List<Employee> employees = company.getEmployees();
double sum=0.0;
%>
<table border="1">
<tr>
<td>ID</td>
<td>Name</td>
<td>Salary</td>
</tr>
<%
for(int i=0; i <employees.size(); i++){
sum += employees.get(i).getSalary();
%>
<tr>
<td><%=employees.get(i).getId()%></td>
<td><%=employees.get(i).getNom()%></td>
<td><%=employees.get(i).getSalary()%></td>
</tr>
<% } %>
</table>
//get the average salary of all employees ::: This is returning the average
<p>Average salary of all employees in this company:<%=sum/(double)employees.size()%> </p>
//this is returning zero.
<p> New average method: <%=company.getAverageSalary()%></p>
public static CompanyretrieveById(int id) {
EntityManager em = GestionFactory.factory.createEntityManager();
Company company = em.find(Company.class, id);
em.close();
return company;
}
public static List<Company> getAll() {
EntityManager em = GestionFactory.factory.createEntityManager();
Query q = em.createQuery("SELECT e.company, AVG(e.salary) FROM Employee e GROUP BY e.company");
// each list entry contains a tuple (company, avgSalary)
List<Object[]> results = q.getResultList();
List<Company> companiesList = new LinkedList<>();
for (Object[] entry : results) {
Company company = (Company) entry[0]; // contains "e.company"
Double avgSalary = (Double) entry[1]; // contains "AVG(e.salary)"
company.setAverageSalary(avgSalary);
companiesList.add(company);
}
return companiesList;
}
@Entity
public class Company implements Serializable {
// ...
@Transient
private double averageSalary;
public void setAverageSalary(double averageSalary) {
this.averageSalary = averageSalary;
}
public double getAverageSalary() {
return averageSalary;
}
}