2017-03-03 65 views
0

返回0,所以這是查詢我想要運行的例子:SUM()查詢每一個進入

import sqlite3 
import pandas as pd 
conn = sqlite3.connect('nfl_data.db') 
c = conn.cursor() 
newdf = c.execute("""SELECT name, SUM('Rush Yards') 
        FROM collegernr WHERE name ='Doug Martin' 
        GROUP BY name""") 
df = pd.DataFrame(newdf.fetchall()) 
print(df) 

我有玩家幾年大學的統計,我想總結這些值所以每個球員的名字只出現一次,每列的值都是他們的大學總數。

運行此查詢每行每列返回0(如果我有更多的變量,並刪除其中name ='道格·馬丁),此版本將返回:

   0 1 
0 Doug Martin 0.0 

所有的利益列分類作爲REAL或INTEGER,並且沒有NULL值,只有0,並且在Doug Martin的情況下,甚至沒有任何0,所有嚴格正值。

我開始還以爲也許今年柱創建一個問題,但刪除它並沒有解決任何事情。

任何幫助,將不勝感激,我敢肯定,我只是失去了一些東西,在這找了這麼久之後明顯。我很抱歉,如果我創建了一個重複的問題,我無法快速谷歌發現任何東西,或在搜索欄中

+0

忘掉非MySQL的東西,請參閱http://meta.stackoverfl ow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-query。 – Strawberry

+0

發送'描述你的表'能夠幫助...... – Franklin

+0

對不起,我是相當新的使用SQL,所以我不知道該怎麼包括與我的問題。我不能完全弄清楚如何得到類似於描述以在python中工作的內容。你能告訴我你需要什麼信息嗎?欄目有:指數INTEGER,Name文本,RnR_Plays INTEGER,Rec_TD INTEGER,Rec_Yards REAL,接待REAL,Rush_Att REAL,Rush_TD INTEGER,RnR_Yards INTEGER,RnR_TD INTEGER,年INTEGER,大學TEXT –

回答

0

MySQL是解析'Rush Yards'字符串字面搜索。

在數值上下文的解釋,計算結果爲0。作爲示範:

SELECT `Rush Yards`, 'Rush Yards' FROM collegernr 
    ^  ^

SELECT 'Rush Yards', 'Rush Yards' + 0 

如果意圖是引用列名,標識符可以在反引號包圍


   SELECT `name` 
        , SUM(`Rush Yards`) 
       FROM `collegernr` 
       WHERE `name` = 'Doug Martin' 
       GROUP BY `name` 
+0

謝謝你這麼多,是固定不變的對我來說。我不知道如何引用列名與空格,所以我用引號括起來,因爲它的工作,我從來沒有想過它。 –

+0

標識符的雙引號是反引號的更好選擇。標準SQL使用雙引號,SQLite支持反引號以兼容MySQL的非標準行爲。 –

+0

我應該更仔細地認定我的答案是針對MySQL [[tag:mysql]]和MariaDB [[tag:mariadb]],它們使用bacticks來標識轉義。如果'sql_mode'包含'ANSI_QUOTES',那麼是的,標識符可以通過用雙引號括起來進行轉義。如果沒有該設置,用雙引號括起來的標記將被解釋爲字符串文字。在SQL Server中[[tag:sql-server]]標識符使用方括號轉義。 Oracle [[tag:oracle]]通過始終使用雙引號來轉義標識符,更符合ANSI SQL標準。 – spencer7593