一、问题提出
当我以以往写SQL语句的思路在AWS Athena写时,提示以下错误信息:
意思就是要求把查询的字段写到GROUP BY字句中。
二、原因
version | events |
---|---|
1.0 | eat |
1.0 | drink |
1.0 | sit |
假设你想去重version,但此时,如表中version 1.0有三个,对应的events值都不同。那它该保留哪一个呢?
所以严格意义上来说,会要求把events也写到GROUP BY中,这样三个都会被保留下来,就不存在模糊性数据缺失了。
其它字段也是如此,如:
version | events | params |
---|---|---|
1.0 | eat | 100 |
1.0 | eat | 200 |
1.0 | sit | 100 |
1.0 | drink | 100 |
同理,1.0-eat对应两个不同的params,如果不把params写到GROUP BY,那就不知道该保留哪一个。
但非严格意义,比如MySQL。就默认只保留第一行数据。
如上表查询语句:
select * from table group by version;
结果:
version | events | params |
---|---|---|
1.0 | eat | 100 |