Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google bigquery SQL第一次和最后一次出现-通过强制我在“选择”中将所有内容分组来分组_Google Bigquery - Fatal编程技术网

Google bigquery SQL第一次和最后一次出现-通过强制我在“选择”中将所有内容分组来分组

Google bigquery SQL第一次和最后一次出现-通过强制我在“选择”中将所有内容分组来分组,google-bigquery,Google Bigquery,表1 雇员 EmployeeID | StartDateTimestamp | CohortID | CohortName ---------- | ------------------ | -------- | ---------- 1 | 20080101 01:30:00 | 1 | Peanut 1 | 20090204 01:01:00 | 2 | Apple 2 | 20190107 05:52:1

表1

雇员

EmployeeID | StartDateTimestamp | CohortID | CohortName
---------- | ------------------ | -------- | ----------
1          | 20080101 01:30:00  | 1        | Peanut
1          | 20090204 01:01:00  | 2        | Apple
2          | 20190107 05:52:14  | 1        | Peanut
3          | 20190311 02:35:26  | 2        | Apple
在路上学习。我在下面的查询将列出所有员工ID,而不仅仅是第一个队列ID和最后一个队列ID。Group by强制我使用员工ID对StartDateTimestamp2进行分组,它仍然列出所有员工ID,与下面的预期结果不符

理想情况下,(首次出现)结果应为:

EmployeeID | HireStartName | StartDateTimestamp2
---------- | ------------- | -------------------
1          | HiredStart    | 20080501 01:30:00
1          | DeferredStart | 20090604 01:01:00
2          | HiredStart    | 20190115 05:52:14
3          | HiredStart    | 20190330 02:35:26
我的问题如下

CohortID | StartDateTimestamp2
-------- | -------------------
1        | 20080501 01:30:00
2        | 20190115 05:52:14
实际问题是: 使用CohortName的第一个实例来确定每个队列的开始日期

结果:

SELECT firsttable.Cohortid,
       employeetable.StartDateTimestamp2
FROM   Table1 firsttable
INNER JOIN Employee employeetable ON employeetable.employeeid = firsttable.employeeid

对于此数据集,简单聚合应该做到这一点:

Cohort ID | StartDateTimesstamp2
或者,可能:

select cohortID, min(StartDateTimestamp) StartDateTimestamp2
from table1
group by cohortID

3个问题太多了。你应该问一个。此外,您更愿意以表格文本的形式提供数据,以便更容易为愿意提供帮助的人使用。此外,您使用的是mysql还是bigquery?这是两个不同的数据库,具有不同的功能。请仅标记相关的一个。您的查询中没有
分组依据
。您想在哪里使用
分组依据
?您好,很抱歉我在编辑您的建议。我需要第二个Employee表中的StartDateTimestamp2,由EmployeeIDSo
从表1中选择Cohortid,Employee.StartDateTimestamp2在Employee.employeeid=Table1上内部联接Employee。employeeid
@RoastedCarrot:示例数据的问题是两个表的日期值相同,所以你真正想要的东西很模糊。您可能应该编辑您的问题,以使示例数据更清楚。@RoastedCarrot:我用另一个查询更新了我的答案。这更符合您的需要吗?我尝试了您的答案,得到的错误是t.cohortid是选择列表表达式引用t.cohortid既不是分组的,也不是聚合的。
select 
    t.cohortid, 
    min(e.startdatetimestamp2) startdatetimestamp2 
from table1 t
inner join employee e on e.employeeid = t.employeeid
group by t.cohort_id