ORACLE 的统计一直是我弱点,最近想买需要统计下面这个东西,客户端提供几个参数可以进行查询:例如 部门名称 
 
登录的记录都在一张表,但是记录的都是别的表的ID  
 
例如System_log 字段如下 
 
LOG_ID //日志ID   
 USER_ID //登录ID  :用户表T_user
  DEPARTMENT_ID //部门ID   :部门表 
 
DPCODE //完整部门ID :部门表
  LOGINIP //IP
  LOGINTIME //登录时间
  STATE //登录状态
  ONLINETIME //在线时间 
 
每次登录都插入一条如上的记录。还希望大侠们帮帮忙,挺急的 
  部门                     登录人数     登录次数 
 支撑中心_运营管理室           11         11 
 市区营销中心_集团客户部       11         11
  总计                         22         22
  
 

解决方案 »

  1.   

    其实就是统计每个用户的登录次数,可以写个存储过程供,登录成功后程序调用存储过程插入数据,传个用户ID参数就好了,判断该用户的数据是否存在,有就update登录次数+1否则inset  统计表基本字段可以设计为(id系统编码,部门ID,用户ID,登录次数),有其他需求可以再加
    总计( 用户数count下就好了,登录数sum下 )
    基本就这样,具体看你统计需求
      

  2.   

    可以写两条sql,一条是根据部门分组统计,另一个求和。
      

  3.   

    首先查询出各个部门的登录次数和人数,然后通过union all将总计加进去,
    代码如下:SELECT
    B.DEPARTMENT_NAME AS DEPARTMENT_NAME,
    COUNT(DISTINCT A.USER_ID) AS LOGINPERSONS,
    COUNT(A.USER_ID) AS LOGINTIMES
    FROM
    SYSTEM_LOG A,
    DEPARTMENT B
    WHERE
    A.DEPARTMENT_ID = B.DEPARTMENT_ID
    GROUP BY
    A.DEPARTMENT_ID
    UNION ALL
    SELECT
    '总计' AS DEPARTMENT_NAME,
    COUNT(DISTINCT A.USER_ID) AS LOGINPERSONS,
    COUNT(A.USER_ID) AS LOGINTIMES
    FROM
    SYSTEM_LOG A
      

  4.   

    selelct count(XXX)XXXX 然后做成一个视图,每次都查那个视图