2016-06-23 76 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