QUERY返回SELECT的行号和子字符串

时间:2016-06-23 19:32:20

标签: sql google-sheets

在Google电子表格中,我有这样的表格:

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,但执行情况非常糟糕。欢迎所有建议!提前谢谢!

4 个答案:

答案 0 :(得分: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.

答案 1 :(得分: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 Clause:每当我们使用MAX,
    等聚合函数时 MIN,SUM,COUNT,AVG我们将使用GROUP BY子句。
  • 标签用于重命名列名,如SQL中的AS关键字。

  • ORDER BY子句用于对desc或asc进行排序。

Example Spreadsheet link

答案 2 :(得分:0)

如果您使用的是SQL,请尝试以下方法:

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

答案 3 :(得分:0)

如果您正在使用mysql您使用sugstrin_index,因为您的字符串部分未修复lenght

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

来自sqlserver你可以使用substring

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