聚合函數:

實例:
package Test; import static org.junit.Assert.*; import java.util.List; import org.hibernate.Session; import org.junit.Test; import entity.AvgSal; import util.HibernateSessionFactory; import util.HibernateUtil; public class AggTest { /** * 統計部門個數。 */ @Test public void test1() { Session session =HibernateSessionFactory.getSession(); try { Long count = (Long) session.createQuery("select count(d) from Dept d").uniqueResult(); System.out.println("共有"+count+"個部門。"); } catch (Exception e) { e.printStackTrace(); System.out.println("失敗"); } } /** * 統計員工工資。 */ @Test public void test2() { Session session =HibernateSessionFactory.getSession(); try { Double totalsal = (Double) session.createQuery("select sum(e.sal) from Emp e").uniqueResult(); System.out.println("員工工資總數為:"+totalsal); } catch (Exception e) { e.printStackTrace(); System.out.println("失敗"); } } /** * 統計員工最低工資。 */ @Test public void test3() { Session session =HibernateSessionFactory.getSession(); try { Double minsal = (Double) session.createQuery("select min(e.sal) from Emp e").uniqueResult(); System.out.println("員工工資最低為:"+minsal); } catch (Exception e) { e.printStackTrace(); System.out.println("失敗"); } } /** * 統計員工最高工資。 */ @Test public void test4() { Session session =HibernateSessionFactory.getSession(); try { Double maxsal = (Double) session.createQuery("select max(e.sal) from Emp e").uniqueResult(); System.out.println("員工工資最高為:"+maxsal); } catch (Exception e) { e.printStackTrace(); System.out.println("失敗"); } } /** * 統計員工平均工資。 */ @Test public void test5() { Session session =HibernateSessionFactory.getSession(); try { Double avgsal = (Double) session.createQuery("select avg(e.sal) from Emp e").uniqueResult(); System.out.println("員工平均工資為:"+avgsal); } catch (Exception e) { e.printStackTrace(); System.out.println("失敗"); } } /** * 統計最低工資、最高工資以及平均工資。 */ @Test public void test6() { Session session =HibernateSessionFactory.getSession(); try { List<Object[]> list = session.createQuery("select min(e.sal),max(e.sal),avg(e.sal) from Emp e").list(); for (Object[] objects : list) { Double minsal=(Double) objects[0]; Double maxsal=(Double) objects[1]; Double avgsal=(Double) objects[2]; System.out.println("最低工資為:"+minsal+",最高工資為:"+maxsal+",平均工資為:"+avgsal); } } catch (Exception e) { e.printStackTrace(); System.out.println("失敗"); } } /** * 統計員工職位個數。 */ @Test public void test7() { Session session =HibernateSessionFactory.getSession(); try { Long jobcount = (Long) session.createQuery("select count(distinct e.job) from Emp e").uniqueResult(); System.out.println("共有"+jobcount+"種職位"); } catch (Exception e) { e.printStackTrace(); System.out.println("失敗"); } } /** * 按職位統計員工個數。 */ @Test public void test8() { Session session =HibernateSessionFactory.getSession(); try { List<Object[]> list = session.createQuery("select job,count(ename) from Emp group by job").list(); System.out.println("按職位統計員工個數"); for (Object[] objects : list) { String job=(String) objects[0]; Long count=(Long) objects[1]; System.out.println(job+"職位======"+count+"個員工"); } } catch (Exception e) { e.printStackTrace(); System.out.println("失敗"); } } /** * 統計各個部門的平均工資 */ @Test public void test9() { Session session =HibernateSessionFactory.getSession(); try { List<Object[]> list = session.createQuery("select job,avg(sal) from Emp group by job").list(); System.out.println("按職位統計每個職位員工的平均工資"); for (Object[] objects : list) { String job=(String) objects[0]; Double avg=(Double) objects[1]; System.out.println(job+"職位平均工資是======"+avg); } } catch (Exception e) { e.printStackTrace(); System.out.println("失敗"); } } /** * 統計各個職位的最低工資和最高工資 */ @Test public void test10() { Session session =HibernateSessionFactory.getSession(); try { List<Object[]> list = session.createQuery("select job,max(sal),min(sal) from Emp group by job").list(); System.out.println("統計各個職位的最低工資和最高工資"); for (Object[] objects : list) { String job=(String) objects[0]; Double max=(Double) objects[1]; Double min=(Double) objects[2]; System.out.println(job+"職位最高工資是======"+max+",最低工資是:===="+min); } } catch (Exception e) { e.printStackTrace(); System.out.println("失敗"); } } /** * 統計各個部門平均工資高於2000元的部門名稱,打印部門名稱、部門平均工資 */ @Test public void test11() { Session session =HibernateSessionFactory.getSession(); try { List<Object[]> list = session.createQuery("select dept.dname,avg(sal) from Emp group by dept.dname having avg(sal)>2000").list(); System.out.println("統計各個部門平均工資高於2000元的部門名稱,打印部門名稱、部門平均工資"); for (Object[] objects : list) { String dept=(String) objects[0]; Double avg=(Double) objects[1]; System.out.println(dept+"\t"+avg); } } catch (Exception e) { e.printStackTrace(); System.out.println("失敗"); } } /** * 統計各個部門平均工資高於2000元的部門名稱,打印部門名稱、部門平均工資,使用JavaBean封裝查詢結果 */ @Test public void test12() { Session session =HibernateSessionFactory.getSession(); try { List<AvgSal> list = session.createQuery("select new entity.AvgSal(dept.dname,avg(sal) )from Emp group by dept.dname having avg(sal)>2000").list(); System.out.println("統計各個部門平均工資高於2000元的部門名稱,打印部門名稱、部門平均工資,使用JavaBean(entity.AvgSal)封裝查詢結果"); for (AvgSal avgSal : list) { System.out.println(avgSal.getDname()+"\t"+avgSal.getAvgsal()); } } catch (Exception e) { e.printStackTrace(); System.out.println("失敗"); } } }
