當前位置:首頁 » 編程語言 » sql數據處理模塊
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql數據處理模塊

發布時間: 2022-11-15 06:16:58

㈠ 處理數據批量生成sql插入語句

處理數據批量生成sql插入語句
最近在做一個天氣預報模塊,首先需要將客戶端公網ip轉換成所在城市,然後將所在城市名轉換成對應的城市代碼,在網上找到了城市代碼,但是需要處理一下,看了看,有三百多城市及對應的城市代碼,想存到資料庫。就想著做一個數據處理自動生成sql語句的工具,提高效率。
1 直轄市
2 "北京","上海","天津","重慶"
3 "101010100","101020100","101030100","101040100"
4
5 特別行政區
6 "香港","澳門"
7 "101320101","101330101"
8
9 黑龍江
10 "哈爾濱","齊齊哈爾","牡丹江","大慶","伊春","雙鴨山","鶴崗","雞西","佳木斯","七台河","黑河","綏化","大興安嶺"
11 "101050101","101050201","101050301","101050901","101050801","101051301","101051201","101051101","101050401","101051002","101050601","101050501","101050701"
12
13 吉林
14 "長春","延吉","吉林","白山","白城","四平","松原","遼源","大安","通化"
15 "101060101","101060301","101060201","101060901","101060601","101060401","101060801","101060701","101060603","101060501"
16
17 遼寧
18 "沈陽","大連","葫蘆島","盤錦","本溪","撫順","鐵嶺","遼陽","營口","阜新","朝陽","錦州","丹東","鞍山"
19 "101070101","101070201","101071401","101071301","101070501","101070401","101071101","101071001","101070801","101070901","101071201","101070701","101070601","101070301"
20
21 內蒙古
22 "呼和浩特","呼倫貝爾","錫林浩特","包頭","赤峰","海拉爾","烏海","鄂爾多斯","通遼"
23 "101080101","101081000","101080901","101080201","101080601","101081001","101080301","101080701","101080501"
24
25 河北
26 "石家莊","唐山","張家口","廊坊","邢台","邯鄲","滄州","衡水","承德","保定","秦皇島"
27 "101090101","101090501","101090301","101090601","101090901","101091001","101090701","101090801","101090402","101090201","101091101"
28
29 河南
30 "鄭州","開封","洛陽","平頂山","焦作","鶴壁","新鄉","安陽","濮陽","許昌","漯河","三門峽","南陽","商丘","信陽","周口","駐馬店"
31 "101180101","101180801","101180901","101180501","101181101","101181201","101180301","101180201","101181301","101180401","101181501","101181701","101180701","101181001","101180601","101181401","101181601"
32
33 山東
34 "濟南","青島","淄博","威海","曲阜","臨沂","煙台","棗庄","聊城","濟寧","菏澤","泰安","日照","東營","德州","濱州","萊蕪","濰坊"
35 "101120101","101120201","101120301","101121301","101120710","101120901","101120501","101121401","101121701","101120701","101121001","101120801","101121501","101121201","101120401","101121101","101121601","101120601"
36
37 山西
38 "太原","陽泉","晉城","晉中","臨汾","運城","長治","朔州","忻州","大同","呂梁"
39 "101100101","101100301","101100601","101100401","101100701","101100801","101100501","101100901","101101001","101100201","101101101"
40
41 江蘇
42 "南京","蘇州","崑山","南通","太倉","吳縣","徐州","宜興","鎮江","淮安","常熟","鹽城","泰州","無錫","連雲港","揚州","常州","宿遷"
43 "101190101","101190401","101190404","101190501","101190408","101190406","101190801","101190203","101190301","101190901","101190402","101190701","101191201","101190201","101191001","101190601","101191101","101191301"
44
45 安徽
46 "合肥","巢湖","蚌埠","安慶","六安","滁州","馬鞍山","阜陽","宣城","銅陵","淮北","蕪湖","毫州","宿州","淮南","池州"
47 "101220101","101221601","101220201","101220601","101221501","101221101","101220501","101220801","101221401","101221301","101221201","101220301","101220901","101220701","101220401","101221701"
48
49 陝西
50 "西安","韓城","安康","漢中","寶雞","咸陽","榆林","渭南","商洛","銅川","延安"
51 "101110101","101110510","101110701","101110801","101110901","101110200","101110401","101110501","101110601","101111001","101110300"
52
53 寧夏
54 "銀川","固原","中衛","石嘴山","吳忠"
55 "101170101","101170401","101170501","101170201","101170301"
56
57 甘肅
58 "蘭州","白銀","慶陽","酒泉","天水","武威","張掖","甘南","臨夏","平涼","定西","金昌"
59 "101160101","101161301","101160401","101160801","101160901","101160501","101160701","101050204","101161101","101160301","101160201","101160601"
60
61 青海
62 "西寧","海北","海西","黃南","果洛","玉樹","海東","海南"
63 "101150101","101150801","101150701","101150301","101150501","101150601","101150201","101150401"
64
65 湖北
66 "武漢","宜昌","黃岡","恩施","荊州","神農架","十堰","咸寧","襄陽","孝感","隨州","黃石","荊門","鄂州"
67 "101200101","101200901","101200501","101201001","101200801","101201201","101201101","101200701","101200201","101200401","101201301","101200601","101201401","101200301"
68
69 湖南
70 "長沙","邵陽","常德","郴州","吉首","株洲","婁底","湘潭","益陽","永州","岳陽","衡陽","懷化","韶山","張家界"
71 "101250101","101250901","101250601","101250501","101251501","101250301","101250801","101250201","101250701","101251401","101251001","101250401","101251201","101250202","101251101"
72
73 浙江
74 "杭州","湖州","金華","寧波","麗水","紹興","衢州","嘉興","台州","舟山","溫州"
75 "101210101","101210201","101210901","101210401","101210801","101210501","101211001","101210301","101210601","101211101","101210701"
76
77 江西
78 "南昌","萍鄉","九江","上饒","撫州","吉安","鷹潭","宜春","新余","景德鎮","贛州"
79 "101240101","101240901","101240201","101240301","101240401","101240601","101241101","101240501","101241001","101240801","101240701"
80
81 福建
82 "福州","廈門","龍岩","南平","寧德","莆田","泉州","三明","漳州"
83 "101230101","101230201","101230701","101230901","101230301","101230401","101230501","101230801","101230601"
84
85 貴州
86 "貴陽","安順","赤水","遵義","銅仁","六盤水","畢節","凱里","都勻"
87 "101260101","101260301","101260208","101260201","101260601","101260801","101260701","101260501","101260401"
88
89 四川
90 "成都","瀘州","內江","涼山","阿壩","巴中","廣元","樂山","綿陽","德陽","攀枝花","雅安","宜賓","自貢","甘孜州","達州","資陽","廣安","遂寧","眉山","南充"
91 "101270101","101271001","101271201","101271601","101271901","101270901","101272101","101271401","101270401","101272001","101270201","101271701","101271101","101270301","101271801","101270601","101271301","101270801","101270701","101271501","101270501"
92
93 廣東
94 "廣州","深圳","潮州","韶關","湛江","惠州","清遠","東莞","江門","茂名","肇慶","汕尾","河源","揭陽","梅州","中山","德慶","陽江","雲浮","珠海","汕頭","佛山"
95 "101280101","101280601","101281501","101280201","101281001","101280301","101281301","101281601","101281101","101282001","101280901","101282101","101281201","101281901","101280401","101281701","101280905","101281801","101281401","101280701","101280501","101280800"
96
97 廣西
98 "南寧","桂林","陽朔","柳州","梧州","玉林","桂平","賀州","欽州","貴港","防城港","百色","北海","河池","來賓","崇左"
99 "101300101","101300501","101300510","101300301","101300601","101300901","101300802","101300701","101301101","101300801","101301401","101301001","101301301","101301201","101300401","101300201"
100
101 雲南
102 "昆明","保山","楚雄","德宏","紅河","臨滄","怒江","曲靖","思茅","文山","玉溪","昭通","麗江","大理"
103 "101290101","101290501","101290801","101291501","101290301","101291101","101291201","101290401","101290901","101290601","101290701","101291001","101291401","101290201"
104
105 海南
106 "海口","三亞","儋州","瓊山","通什","文昌"
107 "101310101","101310201","101310205","101310102","101310222","101310212"
108
109 新疆
110 "烏魯木齊","阿勒泰","阿克蘇","昌吉","哈密","和田","喀什","克拉瑪依","石河子","塔城","庫爾勒","吐魯番","伊寧"
111 "101130101","101131401","101130801","101130401","101131201","101131301","101130901","101130201","101130301","101131101","101130601","101130501","101131001"
112
113 西藏
114 "拉薩","阿里","昌都","那曲","日喀則","山南","林芝"
115 "101140101","101140701","101140501","101140601","101140201","101140301","101140401"
116
117 台灣
118 "台北","高雄"
119 "101340102","101340201"

城市代碼

一看上去很亂的,而且對應關系是每個省城市一行,代碼一行,分別用引號引起,用逗號分隔,每行間都沒有符號分隔,省名沒有用引號。首先是想著把省名去掉,因為每個城市名都是不相同的。想著每兩行兩行的去處理,但是也要費不少功夫,還容易出錯。就想個索性一次性的全處理的演算法。

ps:界面很簡單,上面是輸入數據,中間是轉換,下面是輸出數據。

後台主要代碼:
[csharp] view plain

private void button1_Click(object sender, EventArgs e)
{
string data = textBox1.Text.Replace("r", "").Replace("n", "").Replace("t", "").Replace(" ", "").Replace(" ", "").Replace(" ", "");
MatchCollection matchsdata = matches(data, ""[sS]*?"");
string[,] temps = new string[matchsdata.Count / 2, 2];
int count0 = 0;
int count1 = 0;
string input = string.Empty;
foreach (Match m in matchsdata)
{
string tempdata = m.Value.Replace(""", "");
try
{
int tryp = int.Parse(tempdata);
temps[count1, 1] = tempdata;
count1++;
}
catch (Exception ex)
{
temps[count0, 0] = tempdata;
count0++;
}
}
for (int i = 0; i < (matchsdata.Count / 2); i++)
{
input += "insert into tbl_CityCode(c_city,c_code) values( + temps[i, 0] + , + temps[i, 1] + )rn";
}
textBox2.Text = input;
}

public static MatchCollection matches(string str, string exp)
{
return Regex.Matches(str, exp, RegexOptions.IgnoreCase);
}

首先是將輸入的數據處理,去除換行符,空格什麼的。然後你應該是會得到一行數據,然後通過正則表達式匹配出所有帶引號的數據,你會發現需要的數據全部都是用引號引起來的,但是怎樣區分城市名和城市代碼呢,它們是混在一起的。不用擔心,你發現了嗎?城市名是字元串,城市代碼是一串數字,我們只要將匹配出的數據數組遍歷,每一行數據都去轉換成int類型,這樣城市名的行就會報錯,在catch中捕捉,這一行就是城市名,沒錯的就是城市代碼,把數據一次存到一個二維數組,對應的列中就行了。這樣就會獲得了相對應的城市名和城市代碼。生成的sql語句要對應相應的資料庫表。
表結構:
轉換完了將生成的sql語句放到查詢器中執行就ok了。共處理了349個城市。
最後不放心自己的演算法,隨機抽查了幾條數據,沒有錯誤。

<script type="text/javascript"><!-- google_ad_client = "ca-pub-1944176156128447"; /* cnblogs 首頁橫幅 */ google_ad_slot = "5419468456"; google_ad_width = 728; google_ad_height = 90; //--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

㈡ 如何用SQL對一下數據進行處理

得寫個存儲過程才行,單條語句是不能完成的

㈢ 如何在EXCEL中使用SQL進行數據處理與分析

在EXCEL中使用SQL進行數據處理與分析步驟有:

工具原料:excel2013版本

  1. 打開「excel」,在「數據」選項卡中,找到「自其他來源」;




    ㈣ sql資料庫後台處理的方法

    private const int MaxPool = 10000; //最大連接數
    private const int MinPool = 0; //最小連接數
    private const bool Asyn_Process = true; //設置非同步訪問資料庫
    private const bool Mars = true; //在單個連接上得到和管理多個、僅向前引用和只讀的結果集(ADO.NET2.0)
    private const int Conn_Timeout = 15; //設置連接等待時間
    private const int Conn_Lifetime = 15; //設置連接的生命周期
    //private string ConnString = ""; //連接字元串
    // private SqlConnection SqlDrConn = null; //連接對象
    private static SqlConnection connection;
    public static SqlConnection Connection
    {
    get
    {
    //string connectionString = ConfigurationManager.ConnectionStrings["Notoko"].ConnectionString;
    //string connectionString = ConfigurationSettings.AppSettings["ConnectionString"];
    //string connectionString = "Data Source=.;Initial Catalog=notoko;Integrated Security=True;User ID=sa;Pwd=123";

    string connectionString = "Data Source=.;"
    + "integrated security=True;"
    + "database=notoko;"
    + "User ID=sa;"
    + "Pwd=123;"
    + "Max Pool Size=" + MaxPool + ";"
    + "Min Pool Size=" + MinPool + ";"
    + "Connect Timeout=" + Conn_Timeout + ";"
    + "Connection Lifetime=" + Conn_Lifetime + ";"
    +"Asynchronous Processing=" + Asyn_Process + ";";
    connection = new SqlConnection(connectionString);
    if (connection == null)
    {
    connection.Open();
    }
    else if (connection.State == System.Data.ConnectionState.Closed)
    {
    connection.Open();
    }
    else if (connection.State == System.Data.ConnectionState.Broken)
    {
    connection.Close();
    connection.Open();
    }
    return connection;
    }
    }
    public static int ExecuteCommand(string safeSql)
    {
    SqlCommand cmd = new SqlCommand(safeSql, Connection);
    int result = cmd.ExecuteNonQuery();
    return result;
    connection.Close();
    connection.Dispose();
    } public static int ExecuteCommand(string sql, params SqlParameter[] values)
    {
    SqlCommand cmd = new SqlCommand(sql, Connection);
    cmd.Parameters.AddRange(values);
    return cmd.ExecuteNonQuery();
    connection.Close();
    connection.Dispose();
    } public static string ReturnStringScalar(string safeSql)
    {
    SqlCommand cmd = new SqlCommand(safeSql, Connection);
    try
    {
    string result = cmd.ExecuteScalar().ToString();
    return result;
    }
    catch (Exception e)
    {
    return "0";
    }
    connection.Close();
    connection.Dispose();
    } public static int GetScalar(string safeSql)
    {
    SqlCommand cmd = new SqlCommand(safeSql, Connection);
    try
    {
    int result = Convert.ToInt32(cmd.ExecuteScalar());
    return result;
    }
    catch (Exception e)
    {
    return 0;
    }
    connection.Close();
    connection.Dispose();
    }
    public static int GetScalar(string sql, params SqlParameter[] values)
    {
    SqlCommand cmd = new SqlCommand(sql, Connection);
    cmd.Parameters.AddRange(values);
    int result = Convert.ToInt32(cmd.ExecuteScalar());
    return result;
    connection.Close();
    connection.Dispose();
    } public static SqlDataReader GetReader(string safeSql)
    {
    SqlCommand cmd = new SqlCommand(safeSql, Connection);
    SqlDataReader reader = cmd.ExecuteReader();
    return reader;
    reader.Close();
    reader.Dispose();
    connection.Close();
    } public static SqlDataReader GetReader(string sql, params SqlParameter[] values)
    {
    SqlCommand cmd = new SqlCommand(sql, Connection);
    cmd.Parameters.AddRange(values);
    SqlDataReader reader = cmd.ExecuteReader();
    return reader;
    reader.Close();
    reader.Dispose();
    connection.Close();
    connection.Dispose();
    } public static DataTable GetDataSet(string safeSql)
    {
    DataSet ds = new DataSet();
    SqlCommand cmd = new SqlCommand(safeSql, Connection);
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    da.Fill(ds);
    connection.Close();
    connection.Dispose();
    return ds.Tables[0];
    } public static DataTable GetDataSet(string sql, params SqlParameter[] values)
    {
    DataSet ds = new DataSet();
    SqlCommand cmd = new SqlCommand(sql, Connection);
    cmd.Parameters.AddRange(values);
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    da.Fill(ds);
    connection.Close();
    connection.Dispose();
    return ds.Tables[0]; }
    }

    ㈤ 誰有SQL資料庫操作模塊

    每種資料庫管理系統都帶有一系列的管理工具軟體和開發軟體。比如Oracle資料庫管理系統就集成了基本的管理工具(SQL Plus等管理開發工具)。此外還有很多第三方的開發管理工具如PL/SQL。

    ㈥ sql表數據處理

    select distinct price from t1 where price<>0 and month<currentMonth orderby month desc
    currentMonth為當前月份

    ㈦ sql 中 什麼是分布式處理數據

    分布式軟體系統(Distributed Software Systems)是支持分布式處理的軟體系統,是在由通信網路互聯的多處理機體系結構上執行任務的系統。它包括分布式操作系統、分布式程序設計語言及其編譯(解釋)系統、分布式文件系統和分布式資料庫系統等。

    分布式操作系統負責管理分布式處理系統資源和控制分布式程序運行。它和集中式操作系統的區別在於資源管理、進程通信和系統結構等方面。

    分布式程序設計語言用於編寫運行於分布式計算機系統上的分布式程序。一個分布式程序由若干個可以獨立執行的程序模塊組成,它們分布於一個分布式處理系統的多台計算機上被同時執行。它與集中式的程序設計語言相比有三個特點:分布性、通信性和穩健性。

    分布式文件系統具有執行遠程文件存取的能力,並以透明方式對分布在網路上的文件進行管理和存取。

    分布式資料庫系統由分布於多個計算機結點上的若干個資料庫系統組成,它提供有效的存取手段來操縱這些結點上的子資料庫。分布式資料庫在使用上可視為一個完整的資料庫,而實際上它是分布在地理分散的各個結點上。當然,分布在各個結點上的子資料庫在邏輯上是相關的。

    ---------------

    分布式資料庫系統是由若干個站集合而成。這些站又稱為節點,它們在通訊網路中聯接在一起,每個節點都是一個獨立的資料庫系統,它們都擁有各自的資料庫、中央處理機、終端,以及各自的局部資料庫管理系統。因此分布式資料庫系統可以看作是一系列集中式資料庫系統的聯合。它們在邏輯上屬於同一系統,但在物理結構上是分布式的。

    分布式資料庫系統已經成為信息處理學科的重要領域,正在迅速發展之中,原因基於以下幾點:

    1、它可以解決組織機構分散而數據需要相互聯系的問題。比如銀行系統,總行與各分行處於不同的城市或城市中的各個地區,在業務上它們需要處理各自的數據,也需要彼此之間的交換和處理,這就需要分布式的系統。

    2、如果一個組織機構需要增加新的相對自主的組織單位來擴充機構,則分布式資料庫系統可以在對當前機構影響最小的情況下進行擴充。

    3、均衡負載的需要。數據的分解採用使局部應用達到最大,這使得各處理機之間的相互干擾降到最低。負載在各處理機之間分擔,可以避免臨界瓶頸。

    4、當現有機構中已存在幾個資料庫系統,而且實現全局應用的必要性增加時,就可以由這些資料庫自下而上構成分布式資料庫系統。

    5、相等規模的分布式資料庫系統在出現故障的幾率上不會比集中式資料庫系統低,但由於其故障的影響僅限於局部數據應用,因此就整個系統來講它的可靠性是比較高的。

    特點

    1、在分布式資料庫系統里不強調集中控制概念,它具有一個以全局資料庫管理員為基礎的分層控制結構,但是每個局部資料庫管理員都具有高度的自主權。

    2、在分布式資料庫系統中數據獨立性概念也同樣重要,然而增加了一個新的概念,就是分布式透明性。所謂分布式透明性就是在編寫程序時好象數據沒有被分布一樣,因此把數據進行轉移不會影響程序的正確性。但程序的執行速度會有所降低。

    3、集中式資料庫系統不同,數據冗餘在分布式系統中被看作是所需要的特性,其原因在於:首先,如果在需要的節點復制數據,則可以提高局部的應用性。其次,當某節點發生故障時,可以操作其它節點上的復制數據,因此這可以增加系統的有效性。當然,在分布式系統中對最佳冗餘度的評價是很復雜的。

    分布式系統的類型,大致可以歸為三類:

    1、分布式數據,但只有一個總? 據庫,沒有局部資料庫。

    2、分層式處理,每一層都有自己的資料庫。

    3、充分分散的分布式網路,沒有中央控制部分,各節點之間的聯接方式又可以有多種,如鬆散的聯接,緊密的聯接,動態的聯接,廣播通知式聯接等。

    ---------------------

    什麼是分布式智能?
    NI LabVIEW 8的分布式智能結合了相關的技術和工具,解決了分布式系統開發會碰到的一些挑戰。更重要的是,NI LabVIEW 8的分布式智能提供的解決方案不僅令這些挑戰迎刃而解,且易於實施。LabVIEW 8的分布式智能具體包括:

    可對分布式系統中的所有結點編程——包括主機和終端。尤為可貴的是,您可以利用LabVIEW圖形化編程方式,對大量不同類型的對象進行編程,如桌面處理器、實時系統、FPGA、PDA、嵌入式微處理器和DSP。
    導航所有系統結點的查看系統——LabVIEW Project Explorer。您可使用Project Explorer查看、編輯、運行和調試運行於任何對象上的結點。
    經簡化的數據共享編程界面——共享變數。使用共享變數,您可輕松地在系統間(甚至實時系統間)傳輸數據且不影響性能。無通信循環,無RT FIFO,無需低層次TCP函數。您可以利用簡單的對話完成共享變數的配置,從而將數據在各系統間傳輸或將數據連接到不同的數據源。您還可添加記錄、警報、事件等數據服務――一切僅需簡單的對話即可完成。
    實現了遠程設備及系統內部或設備及系統之間的同步操作——定時和同步始終是定義高性能測量和控制系統的關鍵問題。利用基於NI技術的系統,探索設備內部並編寫其內部運行機制,從而取得比傳統儀器或PLC方式下更為靈活的解決方案。

    --------------------

    在分布式計算機操作系統支持下,互連的計算機可以互相協調工作,共同完成一項任務。

    也可以這么解釋:
    一種計算機硬體的配置方式和相應的功能配置方式。它是一種多處理器的計算機系統,各處理器通過互連網路構成統一的系統。系統採用分布式計算結構,即把原來系統內中央處理器處理的任務分散給相應的處理器,實現不同功能的各個處理器相互協調,共享系統的外設與軟體。這樣就加快了系統的處理速度,簡化了主機的邏輯結構.

    86小小祝你好運

    ㈧ 數據處理簡單對比:Excel,SQL,Python

    無論是什麼工具,做數據分析的時候一定會涉及到兩類工作:

    這篇文章簡單對比一下Excel、SQL和Python在這兩類任務上的實現過程,從而對比其異同。

    如圖所示,所涉及的共有三個表:

    可以看到,score表通過sno和student表連接、通過cno和course表連接。

    另外,這張截圖截自Excel,主要是為了方便後面Excel部分的討論。

    現在,我想要合並三張表,得到新表merge_table,表包含的列一次為:sno,cno,degree,sname,cname。

    即,新表中包含score表的所有列,student表的sname列,以及course表的cname列。

    為了討論方便,先上結果:

    首先,在 A17:E17 單元格創建所需列名,然後通過簡單復制粘貼得到 A18:C28 這三列的數據。

    D、E列的數據可以通過以下兩種方法實現:

    兩種方法實現邏輯和結果都一樣,但前者調用的時候比後者稍復雜。為了說明,D列數據的提取我使用了方法1,E列數據的提取我使用了方法2。

    D列:

    首先在 D18 單元格輸入以下函數(函數中的單元格所對應的數據請看圖01)

    接著下拉函數至 D28 。

    E列:

    在 E18 單元格輸入以下函數(函數中的單元格所對應的數據請看圖01)

    接著下拉函數至 E28 。

    注意,如果要提取某個表中的多個列的數據,比如除了sname,我還想得到ssex、sbirthday和class的數據,由於這些列是一同儲存在student表中的,用 VLOOPKUP() 顯然更高效。

    如果想要加快效率,還可以在原student表上新增一行,用數字x來表示第x列,然後在調用 VLOOPKUP() 時,直接把第三個參數指向這一行。

    在合並關聯表上,SQL非常便捷。實現的語句有兩個(先創建或者導入原數據表):

    兩種方法返回的結果相同,結果如下:

    我用的MySQL,不知道為什麼合並後行的順序變了=。=

    在Python中,首先導入 numpy 和 pandas 模塊:

    接著導入數據表。

    之後通過以下語句實現merge_table表的建立:

    結果如下:

    現在假設score表多了一行數據:

    如圖所示,藍色部分為多出的數據,且課程6-106在course表中不存在。請無視邏輯問題,主要是為了方便討論:)

    遇到這種情況,上述的實現方法會出現一個問題:

    因為課程號6-106在course表裡並不存在,所以函數在返回值的時候出錯了。

    解決的辦法有一個,就是在原函數上嵌套 IF() 函數。比如我把 E29 的函數更改為:

    如果函數計算結果錯誤,則返回0。

    在SQL中,如果出現此類情況, LEFT JOIN 會返回NULL值:

    如果想把NULL值替換為0,查詢合並表的時候可以加上 isnull() 函數(MySQL中此函數寫作 ifnull() ):

    如果函數計算結果錯誤,則返回0

    返回結果和Excel的差不多,就不上圖了。

    Python中情況類似:

    如果想把NaN值替換為0,只需要在創建merge_table表之後,添加一行語句:

    返回結果也不上圖了,和Excel的一樣。

    面對合並表中數據不匹配,SQL和Python中都可以在合並表的時候把多出項忽略不計,只要把 LEFT JOIN 換成 INNER JOIN 就行了。但Excel不能自動刪除多出項所在行。

    為了方便,現在做一個透視表,該表返回 選了課的同學的學號和其平均課程成績

    三個軟體對於透視表的實現都很友好,並且效率相近。

    Excel在數據透視表工具下把列各種拖拽就行了。

    另外,Excel的數據透視表可以選擇返回合計(Grand Total)或者不返回。

    語句:

    結果:

    語句:

    結果:

    一般做透視表的最終目的是作圖,畢竟一圖勝千語。

    從這個目的出發,Python比SQL、Excel更實用,一來Python比Excel作圖高效很多,二來SQL不能作圖。

    通過上述對比可以發現,Excel合並關聯表比SQL、Python要低效得多,而且在「數據不匹配」問題上解決得不好;而在另一方面,三者在創建透視表上表現相似,就看你習慣用哪個了:)

    ㈨ sql數據處理

    select 答案列,count(*) from 表1 group by 答案列

    然後你再對這個查詢出來的結果做一下處理就可以了