全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SQL及关系型数据库数据分析
2476 9
2022-06-25
<br>
我有一张表mingdan3,内容如下:
uid time
------ ------------
a 2021-01-02
a 2021-01-01
a 2021-01-07
b 2021-01-02
b 2021-01-03
c 2021-01-02
c 2021-01-08
d 2021-01-03
d 2021-01-04
d 2021-01-09
现在我将time从小到大排序,然后对uid分组。代码为:
SELECT uid, time
FROM
(SELECT * FROM mingdan3 ORDER BY time) AS a
GROUP BY uid
得到结果为:
uid time
------ ------------
a 2021-01-02
b 2021-01-02
c 2021-01-02
d 2021-01-03
我想知道为什么这里得出的uid对应的time是2021-01-02而不是2021-01-01。因为我认为分组后的uid对应的time应该是取最前面的值,由于我已经从小打大排序了,所以应该是2021-01-01才对呀,有人知道原因吗?<br>

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2022-6-27 13:42:57
窃以为,group by选择的数据,应该是聚集函数,不应该是time列
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-9-9 16:16:15
用分组排序的函数,取序号为1的就可以取出你想要的结果;
select  uid,time
from(select * ,row_number() over(petition by uid order by time acs) as num )a
where num=1
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-10-21 22:40:44
虽然你提前按照time排序了,但是分组之后的结果数据并不是按照你之前的排序取得
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-10-26 10:33:36
用了group by子句,select中的属性应该是分组属性和聚集函数。你这个SQL语句有点问题。你具体用了什么数据库。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-11-19 19:17:12
group by uid,然后select time,不报错吗?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群