如何按每个客户 ID 的组 ID 获取最短日期
How to get minimum date by group id per client id
我正在尝试 Select 组 ID,以及每个客户 ID 的最短日期。
这是示例数据集。
ClientID GroupID DataDate
1 9 2016-05-01
2 8 2015-04-01
3 7 2016-07-05
1 6 2015-01-05
1 5 2014-11-12
2 4 2016-11-02
1 3 2013-02-14
2 2 2011-04-01
我写了
SELECT
clientID, MIN(DataDate)
FROM sampleTable
GROUP BY clientID
但是在这个查询中,我没有选择 GroupID
。我需要包含 GroupID
才能加入另一个 table。
如果我这样做:
Select
ClientID, GroupID, MIN(DataDate)
FROM sampleTable
GROUP BY ClientID, GroupID
它不会真正获得每个客户的最短约会时间。
你能帮帮我吗。我应该怎么做?
您可以使用 ROW_NUMBER
代替:
SELECT
ClientID, GroupID, DataDate
FROM (
SELECT *,
rn = ROW_NUMBER() OVER(PARTITION BY ClientID ORDER BY DataDate)
FROM SampleData
) t
WHERE rn = 1
如果您想要包含平局,请使用 RANK
而不是 ROW_NUMBER
。
希望我正确理解了你的问题。
您想要显示每个客户 ID 的最短日期
如果我的 table 有这样的数据:
CID GID D1
1 9 03-06-2016
1 6 01-06-2017
1 5 01-06-2015
1 3 01-06-2014
2 4 01-06-2017
2 8 01-06-2014
3 5 03-06-2016
2 4 01-06-2011
输出:
CID GID D1
1 3 01-06-2014
2 4 01-06-2011
3 5 03-06-2016
这就是我认为你可以使用的方法。
select cx.cid,cx.gid, cx.d1 from cli cx where cx.d1=(select min(c1.d1) from cli c1 where c1.cid=cx.cid)
group by cx.cid,cx.gid,cx.d1
order by cx.gid
希望对您有所帮助。
我正在尝试 Select 组 ID,以及每个客户 ID 的最短日期。
这是示例数据集。
ClientID GroupID DataDate
1 9 2016-05-01
2 8 2015-04-01
3 7 2016-07-05
1 6 2015-01-05
1 5 2014-11-12
2 4 2016-11-02
1 3 2013-02-14
2 2 2011-04-01
我写了
SELECT
clientID, MIN(DataDate)
FROM sampleTable
GROUP BY clientID
但是在这个查询中,我没有选择 GroupID
。我需要包含 GroupID
才能加入另一个 table。
如果我这样做:
Select
ClientID, GroupID, MIN(DataDate)
FROM sampleTable
GROUP BY ClientID, GroupID
它不会真正获得每个客户的最短约会时间。
你能帮帮我吗。我应该怎么做?
您可以使用 ROW_NUMBER
代替:
SELECT
ClientID, GroupID, DataDate
FROM (
SELECT *,
rn = ROW_NUMBER() OVER(PARTITION BY ClientID ORDER BY DataDate)
FROM SampleData
) t
WHERE rn = 1
如果您想要包含平局,请使用 RANK
而不是 ROW_NUMBER
。
希望我正确理解了你的问题。 您想要显示每个客户 ID 的最短日期
如果我的 table 有这样的数据:
CID GID D1
1 9 03-06-2016
1 6 01-06-2017
1 5 01-06-2015
1 3 01-06-2014
2 4 01-06-2017
2 8 01-06-2014
3 5 03-06-2016
2 4 01-06-2011
输出:
CID GID D1
1 3 01-06-2014
2 4 01-06-2011
3 5 03-06-2016
这就是我认为你可以使用的方法。
select cx.cid,cx.gid, cx.d1 from cli cx where cx.d1=(select min(c1.d1) from cli c1 where c1.cid=cx.cid)
group by cx.cid,cx.gid,cx.d1
order by cx.gid
希望对您有所帮助。