日期:2014-05-20  浏览次数:20745 次

sql+mysql+chart+DataTable实现折线图分享!
本帖最后由 liangchengfck1 于 2012-09-21 09:54:23 编辑
数据库字段
username number datastar dataend
下面我把我做的完整代码奉上!功能如下
按照姓名求出当年的每个月的,每周的,前一个月的使用流量和用折线图表示出来!

每个月的就是重2012-01-01开始到今天(按照月为单位 yyyy-MM)sum(number)group by 时间就可以了
这里的时间要把 天 时 分 秒 去掉!
因为group by 时间的时候!比如2012-12-12 12:12:12, 2012-12-13 12:13:12  
这样分组的话2012-12这天会有不止一条记录,我们要求的是2012-12这月所有的sum!
DATE_FORMAT(datastar , '%Y-%m)my_month   
这件话就是把 天 时 分 秒 取掉了 查出来只显示 2012-12 那么我们这个时候在group by 时间 再sum一下就把这一月的和求出来了!

每周的按照周为单位 一共显示2012-01-01到今天的全部周数 求周数的sum放到chart上
前一个月的 按照天数为单位 31条记录(yyyy-MM-dd)
这个功能现在已经完善了!

 返回的是databable 如果
 DbStatement db = dbc.DbSessionOwa.GetStatement(sql);
        return dbc.DbSessionOwa.ExecuteDataTable(db);
这两句话里面的类我没写,反正返回的databable 都知道怎么返回的,所以这两句话你们可以用你们的方法返回datatable!
 

//每天
        public static DataTable SelectDay(string name, string type, string star, string end)
        {
          string sql = string.Format("SELECT round(sum(size/1000/1024),2)sums,DATE_FORMAT(date, '%Y-%m-%d')my_month from owa_isa where username='{0}' and client='{1}' and date between '{2}' and '{3}' GROUP BY my_month", name,type, star,end);
        DbStatement db = dbc.DbSessionOwa.GetStatement(sql);
        return dbc.DbSessionOwa.ExecuteDataTable(db);
          
        }
        //每周
        public static DataTable SelectWeek(string name, string type, string star, string end)
        {
            string sql = string.Format("SELECT round(sum(size/1000/1024),2)sums,week(date,1)my_month from owa_isa where username='{0}' and client='{1}' and date between '{2}' and '{3}' GROUP BY my_month", name, type, star, end);
            DbStatement db = dbc.DbSessionOwa.GetStatement(sql);
            return dbc.DbSessionOwa.ExecuteDataTable(db);
        }
        //每月
        public static DataTable SelectMonth(string name, string type, string star, string end)
        {
            string sql = string.Format("SELECT round(sum(size/1000/1024),2)sums,DATE_FORMAT(date, '%Y-%m')my_month from owa_isa where username='{0}' and client='{1}' and date between '{2}' and '{3}' GROUP BY my_month", name, type, star, end);
            DbStatement db = dbc.DbSessionOwa.GetStatement(sql);