sql 按照entrance字段 每组取随机200条
时间: 2023-07-19 17:26:40 浏览: 49
可以使用 MySQL 的内置函数 `RAND()` 和 `LIMIT` 来实现按照 `entrance` 字段分组每组取随机 200 条的需求,具体的 SQL 语句如下:
```
SELECT *
FROM (
SELECT *
FROM your_table
ORDER BY entrance, RAND()
) AS temp
GROUP BY entrance
LIMIT 200
```
其中,`your_table` 是需要进行分组的表,`entrance` 是用来分组的列。子查询首先按照 `entrance` 和 `RAND()` 进行排序,然后外层查询再根据 `entrance` 进行分组,并限制每组最多取 200 条记录。
需要注意的是,使用 `RAND()` 函数来进行随机排序会导致性能问题,如果数据量较大,可能会影响查询效率。如果只是简单的随机取 200 条数据,可以直接使用 `ORDER BY RAND() LIMIT 200` 来实现,但是这种方式无法按照 `entrance` 字段分组。
相关问题
mysql按照entrance分组每组取随机的10条
你可以使用子查询和 MySQL 的 RAND() 函数来实现按照 `entrance` 分组每组取随机的10条的需求。具体可以参考以下 SQL 语句:
```
SELECT *
FROM (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY entrance ORDER BY RAND()) AS row_num
FROM your_table
) subquery
WHERE row_num <= 10
```
其中,`entrance` 是你要分组的列名。这条 SQL 语句会先对原始数据按照 `entrance` 进行分组,然后使用 `RAND()` 函数生成一个随机数作为排序依据。接着,使用 ROW_NUMBER() 函数给每行数据编号,编号从1开始,每个分组内的数据编号都是独立的。最后,对这个子查询结果进行筛选,只保留每个分组内的前10行数据。
需要注意的是,由于 `RAND()` 函数的存在,每次运行这个 SQL 语句取到的数据都是随机的。如果你希望每次取到的数据都一样,可以将子查询中的 `RAND()` 函数替换为一个固定的值,比如当前的日期时间。
转换成odps sql
以下是将该SQL语句转换为ODPS SQL语句的示例:
```
SELECT user_id,client_id,client_platform,to_char(cast(access_time as date),'yyyymmdd') as access_dt,mode,
NULL as action,info_id,NULL as entrance,NULL as info_type,NULL as is_detail,0 as duration,NULL as refresh_id,
NULL as info_height,NULL as browse_height,'page' as from_table
FROM basic.dw_bi_page_fact
WHERE dt <= to_char(dateadd('day',7,'${input_job_ymd}'),'yyyymmdd')
AND dt >= to_char(dateadd('day',-7,'${input_job_ymd}'),'yyyymmdd')
AND to_char(cast(access_time as date),'yyyymmdd') <= '${input_job_ymd}'
AND to_char(cast(access_time as date),'yyyymmdd') >= to_char(dateadd('day',-7,'${input_job_ymd}'),'yyyymmdd')
AND datediff('day',cast(to_char(access_time,'yyyy-MM-dd') as date),cast(dt as date)) BETWEEN 0 AND 7
AND page_code = 3
AND page_name IN (SELECT code FROM basic.dim_app_page_merge WHERE dt='${yester_date}' AND unified_page='MixCommunityTab')
```
在ODPS SQL中,日期函数、字符串函数和日期格式化函数与Spark SQL略有不同,需要进行相应的修改。同时,使用的日期函数和字符串函数的参数顺序也与Spark SQL略有不同。另外,ODPS SQL中的日期函数和日期格式化函数都需要使用 cast 函数进行类型转换。在IN子句中,ODPS SQL使用的是子查询的方式来进行数据的筛选。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)