请选择 进入手机版 | 继续访问电脑版
楼主: 18770378213
989 9

对一个group by 的疑问? [推广有奖]

  • 0关注
  • 0粉丝

大专生

21%

还不是VIP/贵宾

-

威望
0
论坛币
100 个
通用积分
0.1569
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
124 点
帖子
28
精华
0
在线时间
34 小时
注册时间
2021-10-14
最后登录
2022-11-19

18770378213 学生认证  发表于 2022-6-25 15:12:56 来自手机 |显示全部楼层 |坛友微信交流群

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
<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>

二维码

扫码加我 拉你入群

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

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

关键词:Group Select Elect Order time

HappyAndy_Lo 发表于 2022-6-27 13:42:57 |显示全部楼层 |坛友微信交流群
窃以为,group by选择的数据,应该是聚集函数,不应该是time列

使用道具

manyu123546 学生认证  发表于 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排序了,但是分组之后的结果数据并不是按照你之前的排序取得

使用道具

hurricanewhu 发表于 2022-10-26 10:33:36 |显示全部楼层 |坛友微信交流群
用了group by子句,select中的属性应该是分组属性和聚集函数。你这个SQL语句有点问题。你具体用了什么数据库。

使用道具

leexue1991 在职认证  发表于 2022-11-19 19:17:12 |显示全部楼层 |坛友微信交流群
group by uid,然后select time,不报错吗?

使用道具

建议group by uid ,time。group by是不自动order的

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-19 08:28