hibernate-聚合函數分組統計數據查詢


聚合函數:

實例:

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("失敗");
        }
    }
    
    

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM