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;
    }
}