示例数据库:[存储为Google电子表格]
- 时间戳======= | =联系人否= | =比尔======= |
- =============== | =========== | == - ====== |
- 11/7/2014 2:46:29 | 9332261982 | 13.0305472 |
- 15/6/2014 2:46:29 | 9332261982 | 14.0305472 |
- 22/5/2014 2:46:29 | 9332261982 | 16.0305472 |
- 11/4/2014 2:46:29 | 9332261982 | 20.0305472 |
- 15/7/2014 2:46:29 | 9916901970 | 13.0305472 |
- 1/6/2014 2:46:29 | 9916901970 | 14.0305472 |
- 12/5/2014 2:46:29 | 9916901970 | 16.0305472 |
- 20/4/2014 2:46:29 | 9916901970 | 20.0305472 |
我需要:
- 时间戳======= | =联系人否= | =比尔======= |
- =============== | =========== | =========== |
- 11/7/2014 2:46:29 | 9332261982 | 13.0305472 |
- 15/7/2014 2:46:29 | 9916901970 | 13.0305472 |
所以我在Google电子表格中有3列时间戳(列 - A),联系号码(列 - B)和账单金额(列 - C)。 我需要一个大查询(或我可以与Google电子表格一起使用的查询),如果我在查询中传递该联系人,可以通过时间戳获取每个联系人的最新账单金额(作为where子句 - 如在哪里B包含XXX或B包含YYY)。
到目前为止,通过检查其他Stack溢出链接和Google搜索,我得出了类似的结果:
select * where B contains 9332261982 order by A DESC LIMIT 1 OFFSET 0
或
select A,B,C where B contains 9332261982 or B contains 9916901970 order by A DESC
那么如何解决这个问题并获得我想要的查询?
答案 0 :(得分:1)
在BigQuery中我会做类似的事情:
Select A,B,C FROM
(Select *
, Row_Number() Over(Partition By B Order by A Desc) as RNB
From yourtable)
Where RNB=1
另一种选择(如果你没有窗口功能)会使用一些字符串操作和最大值
希望这有帮助