2016-06-23 98 views
0

在谷歌電子表格的子我有這樣的表:查詢返回的行數和SELECT

A   B C 
---------------- 
One [0] 3 2 
Two [1] 6 0 
Three [5] 1 1 
Four [3] 1 2 
Five [2] 1 0 

我想生成SORT()QUERY()這將返回由B和C的總和排序的兩列的表。另外,A列應該是子字符串以刪除最後四個字符。 所以結果應該是:

Two 6 
One 5 
Four 3 
Three 2 
Five 1 

我試着用SELECT MID(A,1,-5), (B+C) ORDER BY B+C,但執行是非常糟糕的。歡迎所有建議!先謝謝你!

+0

你是什​​麼意思,「處決情況很糟糕」?執行時間不好? –

+0

我的意思是它根本不起作用:) – friedman

回答

0

如果你使用SQL,試試這個:

SELECT 
    LEFT(A,LEN(A)-4) AS Col1 
    ,(B+C) AS Col2  
FROM table  
ORDER BY Col2 DESC 
0

如果你正在使用MySQL你一個使用sugstrin_index因爲你的字符串部分不固定lenght

select SUBSTRING_INDEX(a,' ',1) as A , b+c as C 
from your_table 
order by C DESC 

來回SQLSERVER可以使用子串

select SUBSTRING(a, 1, instr(String," ") -1) as A , b+c as C 
from your_table 
order by C DESC 
1

這會幫助你

=QUERY(B2:D7,"Select B,SUM(C)+SUM(D) group by B order by SUM(C)+SUM(D) desc label SUM(C)+SUM(D) 'SUM'") 

enter image description here

如果你是新的SQL,

  • GROUP BY子句:只要我們使用聚合函數,如MAX,
    MIN,SUM,COUNT,AVG我們將使用GROUP BY子句。
  • 標籤用於重命名列名稱,如SQL中的AS關鍵字。

  • ORDER BY子句用於對desc或asc進行排序。

Example Spreadsheet link

+0

謝謝,哈沙!這很好。有一個額外的問題,我已經忘記在開幕後 - 是否有可能編號的結果行?例如'1:2','6'; '2:One','5'等等...... – friedman

2

另外,還嘗試(在谷歌電子表格)

=query({ArrayFormula(regexextract(A2:A, "^(.+) \[")), B2:C}, "Select Col1, sum(Col2)+sum(Col3) where Col2 is not null group by Col1 order by sum(Col2)+sum(Col3) label sum(Col2)+sum(Col3)''",0) 

,或者根據您所在地區:

=query({ArrayFormula(regexextract(A2:A; "^(.+) \["))\ B2:C}; "Select Col1, sum(Col2)+sum(Col3) where Col2 is not null group by Col1 order by sum(Col2)+sum(Col3) label sum(Col2)+sum(Col3)''";0) 

另見this example spreadsheet.

+0

這很棒,但請告訴我一件事。當我嘗試將其轉換爲我使用的其他電子表格時;而不是分開參數,然後出現錯誤「QUERY:NO_COLUMN:Col2」。 – friedman

+0

@friedman:我用你的語言環境公式更新了我的答案。 – JPV