SQL数据库取一年内每月的数据统计
目的是展示出上一年整年每月的舆情数量,由于前面几个月确实没数据,所以看起来图表有些奇怪
最终效果如下:
数据库表结构如下:
我们根据CrawlDate 爬取舆情的时间字段去处理。
sql语句如下:
select year(CrawlDate) as 年,
month(CrawlDate) as 月,
count(*) as 数量,
WebSite
from Information
where year(CrawlDate)=2017
group by Website, year(CrawlDate), month(CrawlDate)
运行结果:
后台controller,没有使用sql语句而是另外一种:
public class crawl{public string name;public int[] data;}
/// <summary>/// 获取舆情走势/// </summary>/// <returns></returns>public ActionResult getCrawl(){//int myYear = DateTime.Now.Year-1;using (BaseDataDbContext db = new BaseDataDbContext()){var q = db.Informations;//.Where(u=>u.CrawlDate.Year.Equals("2017"));var sums2 = from emp in qwhere emp.CrawlDate.Year.Equals(DateTime.Now.Year - 1)//查询去年的数据group emp by new { emp.WebSite, emp.CrawlDate.Year, emp.CrawlDate.Month } into gselect new { Peo = g.Key, Count = g.Count() };List<crawl> list = new List<crawl>();List<SelectListItem> s = ShiJianService.GetYqjcType();for (var j = 0; j < s.Count; j++){crawl c = new crawl();c.name = s[j].Text;int[] nums = new int[12] { 0,0,0,0,0,0,0,0,0,0,0,0 };foreach (var item in sums2){if (item.Peo.WebSite == s[j].Text){nums[item.Peo.Month - 1] = item.Count;}elsecontinue;}c.data = nums;list.Add(c);}string str = JsonConvert.SerializeObject(list, Formatting.Indented);return Content(str);}}
查询结果如图:
前台图表展示代码:
function getCrawl() {$.ajax({type: 'GET',url: '/Account/Base/getCrawl',ajaxCache: true,datatype: 'json',success: function (datas) {//console.log(datas);var _obj = JSON.parse(datas);//console.log(_obj);// console.log(_obj);var mydate =new Date();var lastyear = mydate.getFullYear() - 1;var chart = Highcharts.chart('container4', {title: {text: lastyear+'年舆情走势图'},subtitle: {text: '数据来源:舆情系统'},xAxis: {categories: getMonth()},yAxis: {title: {text: '舆情数量'}},legend: {layout: 'vertical',align: 'right',verticalAlign: 'middle'},plotOptions: {series: {label: {connectorAllowed: false},//pointStart: 2010}},series: _obj,responsive: {rules: [{condition: {maxWidth: 500},chartOptions: {legend: {layout: 'horizontal',align: 'center',verticalAlign: 'bottom'}}}]}});},error: function (ret) {// 此处放失败后执行的代码console.log(ret);}});}
SQL数据库取一年内每月的数据统计相关推荐
- 在SQL数据库中存储纬度和经度数据时要使用的数据类型是什么? [重复]
本文翻译自:What datatype to use when storing latitude and longitude data in SQL databases? [duplicate] Th ...
- SQL数据库(分页查询、DCL 数据控制语言、通用函数、约束、多表查询)
分页查询 语法 select 字段列表 from 表名 limit 起始索引,查询记录数(每页显示的条数) 注意 起始索引 从0开始, 起始索引 = (查询的页码-1)* 每页显示的记录数 1–5-0 ...
- oracle取本月最后一天是星期几_oracle SQL语句取本周本月本年的数据
--国内从周一到周日 国外是周日到周六 select to_char(sysdate-1,'D') from dual;--取国内的星期几 去掉减一取国外的星期 --取本周时间内的数据 select ...
- SQL数据库实战(含建表数据和查询案例)
Oracle数据库安装的时候会自带一个练习用数据库(其中包含employee表,后来版本中此表改名为emp): 首先在安装过程中应该有个选项"是否安装实例表"(完全安装模式下默认是 ...
- sql数据库中有多列重复的数据查询
数据库测试表testtable 一.单列重复查询 sql:SELECT Name FROM testtable t WHERE Name IN (SELECT Name FROM testtable ...
- Oracle+sql+取年度,oracle SQL语句取本周本月本年的数据
--国内从周一到周日 国外是周日到周六 select to_char(sysdate-1,'D') from dual;--取国内的星期几 去掉减一取国外的星期 --取本周时间内的数据 select ...
- SQL数据库语言基础之SqlServer表数据的插入、更新与删除
文章目录 一.数据的插入(INSERT INTO...VALUES) 二.数据的更新(UPDATE) 三.删除数据(DELETE) 一.数据的插入(INSERT INTO-VALUES) 1.数据插入 ...
- SQL SERVER:开窗函数 SUM() OVER() 数据统计中一例使用
由于前一段时间胃痛,导致博客园博客都停更了一个月左右.近几天,胃病终于稍微有所好转,决定重新写博文. 前几天,有个朋友刚好问到本人有关 SQL 语句,大致是原表有两列,分别为月份.月份销售额,而需要一 ...
- azure云数据库_从Azure Databricks将数据加载到Azure SQL数据库
azure云数据库 In this article, we will learn how we can load data into Azure SQL Database from Azure Dat ...
最新文章
- VCTransitionsLibrary –自定义iOS交互式转场动画的库
- oracle db file sequential read,db file sequential read等待事件
- ALV标准过滤功能失效
- Java Dom解析xml
- 敏捷测试理论以及实践(2)
- 【MFC】利用MFC向导生成单文档应用程序框架
- map reduce相关程序
- 将传统 WPF 程序迁移到 DotNetCore 3.0
- html中所有的标签,HTML中的所有标签及其做用!
- 去除tabbar的灰线
- iOS开发 Xcode10报错缺少libstdc++.6.0.9.tbd
- SPSS数据插补方法
- java:详解native方法
- 离线扫一扫识别车牌号 车牌识别 OCR识别技术
- ElasticJob分布式调度,使用注册中心zookeeper开启动态定时任务附源码(三)
- 可视化h5界面编辑器_超优秀 H5可视化制作编辑器H5DS
- R语言伴随矩阵的计算
- 微信小程序:蓝牙通讯,搜索、发送与接收
- h3cmsr830series说明书_H3C MSR830路由器怎么设置?
- ubuntu下使用vscode阅读内核源码或uboot源码使用技巧——search.excludefiles.exclude