首页 >

mysql截取分组 |mysql select is null

mysql删除太慢,dw 怎么和mysql,MySQL如何自动数据备份,mysql怎么插数据最快,mysql substring 0 2,mysql select is nullmysql截取分组 |mysql select is null

下面大家来看一下如何使用子查询和LIMIT子句来截取GROUP BY分组的数据:

SELECT 
name, 
AVG(score) avg_score 
FROM 
scores 
GROUP BY 
name 
HAVING 
avg_score >(
SELECT 
AVG(score) 
FROM 
scores 
GROUP BY 
name 
LIMIT 1
)

在上面的例子中,大家首先使用GROUP BY语句将scores表按照name列进行分组,并计算每个分组的平均值。然后,大家使用HAVING子句来筛选出平均分高于整个表的平均分的分组。

有时候大家需要根据指定规则截取分组后的数据,例如,只显示每个分组中前三高的分数。这时候可以使用变量和CASE语句来实现:

SELECT 
name, 
score 
FROM 
(
SELECT 
name, 
score, 
@row_num := IF(@prev_name = name, @row_num+1, 1) AS row_number, 
@prev_name := name 
FROM 
scores, (SELECT @row_num := 0, @prev_name := '') t 
ORDER BY 
name, 
score DESC
) t 
WHERE 
row_number<= 3

在上面的例子中,大家首先使用子查询和变量来给每条数据添加了一个行号,然后使用WHERE子句找出每个分组前三高的分数。

总之,MySQL中的分组函数和语句非常强大,可以方便地对数据进行条件分析和聚合运算。而在实际应用中,也需要灵活地组合使用各种语句和函数,以达到预期的效果。


  • 暂无相关文章