按列排序

时间:2019-01-11 16:29:57

标签: google-bigquery

我有两列说时间(HH:MM:SS)格式和message(String)我想做的是使用不同的消息来订购,但是由于我有时间列,所以我仍然会重复

time         message
10:00:01     hi
10:00:02     hi

预期查询应返回

time         message
10:00:01     hi

time         message
10:00:02     hi

只要消息是其中之一,因为它们是相同的

我已经尝试过了,但这没有用。这有可能实现吗?

select distinct time as time
message as a message
from `table_name`
group by message, time  

2 个答案:

答案 0 :(得分:2)

希望我理解您的问题,可能需要一点澄清(不确定您的问题是什么或意味着什么)。

无论如何,这是您要查找的SQL:

select message as message,
time as time
from `table_name`
group by message 
order by message desc, time desc

答案 1 :(得分:1)

以下是用于BigQuery标准SQL

   
#standardSQL
SELECT 
  MIN(time) AS time,
  message
FROM `project.dataset.table_name`
GROUP BY message 
-- ORDER BY time  

您可以使用以下问题中的示例数据来玩游戏

#standardSQL
WITH `project.dataset.table_name` AS (
  SELECT '10:00:01' time, 'hi' message UNION ALL
  SELECT '10:00:02', 'hi'
)
SELECT 
  MIN(time) AS time,
  message
FROM `project.dataset.table_name`
GROUP BY message 
-- ORDER BY time

这会产生

Row time        message  
1   10:00:01    hi    

您可以使用MAX代替MIN来产生以下结果

Row time        message  
1   10:00:02    hi