1. 程式人生 > >SQL資料庫取一年內每月的資料統計

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 q
                            where emp.CrawlDate.Year.Equals(DateTime.Now.Year - 1)//查詢去年的資料
                            group emp by new { emp.WebSite, emp.CrawlDate.Year, emp.CrawlDate.Month } into g
                            select 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;
                        }
                        else
                            continue;
                    }
                    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資料庫年內每月資料統計

目的是展示出上一年整年每月的輿情數量,由於前面幾個月確實沒資料,所以看起來圖表有些奇怪最終效果如下:資料庫表結構如下:我們根據CrawlDate 爬取輿情的時間欄位去處理。sql語句如下:select year(CrawlDate) as 年, month(CrawlDate

MySql 資料庫sql語句段時間的每天的最後

使用場景: 使用者每天都有上報資料,後臺需要檢視某個使用者近期一段時間內每天的資料走勢。於是需要查詢該使用者在這段時間內每天最後上報的那條資料。 程式碼如下: SELECT * FR

SQL Server基礎() VS2015 建立資料表:建表、修改表名字、往表中新增資料、查詢表,最後是資料庫檔案的屬性

VS2015 建立資料表流程 1、右擊表,建立資料表——設定主鍵 2、修改資料的名字為Inventory 3、新增資料 4、右擊資料庫庫——新建查詢,輸入SQL語法,就可以查詢表的資料了 往表中新增一行,重新查詢。你會發現,表名字不區分大小。

年內資料 SQL語句

select * from ShopOrder where datediff(week,ordTime,getdate()-1)=0 //查詢當天日期在一週年的資料 select * from ShopOrder where datediff(day,ordTime,

sql資料庫寫建立語句,SQLiteDatabase類的常用語句

如果不懂sql的基本使用的話,先看一下本人的這篇文章,再看本文,或許會好一些。 連結地址:http://blog.csdn.net/qq_35681180/article/details/53612764 資料庫的增刪查改有兩種方式,一種是直接通過db物件呼叫相應的

Linux--C語言操作資料庫)插入資料

 各種渠道去找有關於使用C語言操作資料庫的資料,好辛苦,弄出來了! 資料庫部分 首先建立一張表 create table children(childno int not null unique,fname varchar(20),age int);

SparkSQL結合SparkStreaming,使用SQL完成實時計算中的資料統計

關鍵字:SparkSQL、Spark Streaming、SQL、實時計算 Flume+Kafka+SparkStreaming已經發展為一個比較成熟的實時日誌收集與計算架構,利用Kafka,即可以支援將用於離線分析的資料流到HDFS,又可以同時支撐多個消費者實時消費資料,包括SparkStreamin

sqlserver資料庫如何每時/每天/每月/每年任資料

    最近用sqlserver+.NET做一個專案,需求是要用圖表來顯示資料,而且是每時/每天/每月/每年任取一條資料,即如果使用者選擇時間的區域是同一天,那麼按區域的每小時取一條記錄,如果區間是一個月,那麼每天任取一條資料,如果區間是一年,每個月任取一條資料。。。。。 &

SQL Sever實驗 建立和刪除資料庫資料

一. 實驗目的     1. 熟悉SQL    Server    2008    中SQL    Server   &n

mysql優化之資料庫隨機資料

大家都知道mysql 查詢資料庫隨機取一條資料當然用rand()方法  其實這個方法是超級雞肋的,當然你愛好也無所謂,首先列舉兩個表 a表   id(主鍵 int),cardnumber(身份證號碼 char(18)),name(使用者名稱 varchar(40))

sql去重;同一條資料出現多條條的sql語句

理論上相同資料個別欄位值不同重複問題: 1.某欄位重複,其他欄位值不同時,按重複欄位分組只取一條的sql語句 (eg:相同的資料某個欄位值有差別導致儲存兩條或多條無意義重複資料的情況)select s.* from (    select a.*, row_number()

MySQL 對段時間內每天資料統計案例--sql優化

在網際網路專案中,對專案的資料分析必不可少。通常會統計某一段時間內每天資料總計變化趨勢調整營銷策略。下面來看以下案例。 案例 在電商平臺中通常會有訂單表,記錄所有訂單資訊。現在我們需要統計某個月份每天訂單數及銷售金額資料從而繪製出如下統計圖,進行資料分析。

Python從資料庫數,對時間進行處理,統計資料彙總後畫圖

#-*- coding: utf8 -*- import odbc import numpy as np import pylab as pl allDate = [] allData = [] if __name__ == '__main__': print("run success") a

SQL Server中,查詢資料庫中有多少個表,以及資料庫其餘型別資料統計查詢

sql server 數表: select count(1) from sysobjects where xtype='U' 數檢視: select count(1) from sysobjects where xtype='V' 數儲存過程 select count(1) from sysobjects

資料庫char varchar nchar nvarchar,編碼Unicode,UTF8,GBK等,Sql語句中文前為什麼加N(次線上資料儲存亂碼排查)

## 背景 公司有一個數據處理線,上面的資料經過不同環境處理,然後上線到正式庫。其中一個環節需要將資料進行處理然後匯入到另外一個庫(Sql Server)。這個處理的程式是老大用python寫的,處理完後進入另外一個庫後某些欄位出現了亂碼。 比如這個字串:`1006⁃267X(2020)02⁃0548⁃1

SQL相同字段另字段最大記錄

當A字段重復取B字段最大的一條記錄sql取A字段重復記錄的B字段值最大的一條記錄 select max(id) id,name from 表 group by name --如果表中還有其他字段要查出,那麽 select * from 表 where id in (select max(id) from 表

SQL Sever 資料庫視訊 () (SQL基礎及管理工具)

自考也結束了,接下來應該好好的學習了  接下來總結下資料庫視訊的知識點。 SQL sever基礎知識 SQL 語句的特點:  .功能強大 .操作簡便 .可靠安全性       *(資料庫:  存放

mysql進階(十九)SQL語句如何精準查詢某時間段的資料

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

SQL Server基礎() 工程上,我們用VS 新建個數據庫,還是新增或讀取已有的資料庫呢(SSMS 可管理資料庫)?

一、VS 建立資料庫 1、轉 https://jingyan.baidu.com/album/9f63fb91893ac3c8410f0e58.html?picindex=2 2、VS建立資料庫後,新增表時,要點選"更新"按鈕。資料表才會成功建立。 轉https://blog.

SQL之merge into 批量更新資料 Merge關鍵字是一個神奇的DML關鍵字。它在SQL Server 2008被引入,它能將Insert,Update,Delete簡單的併為句。M

轉載http://www.cnblogs.com/ruiati/archive/2013/01/18/2866017.html     Merge關鍵字是一個神奇的DML關鍵字。它在SQL Server 2008被引入,它能將Insert,Up