我有以下表格
+------+------------+--------+----------+-----------+--------------------+---------+--------------------+------+
| mrId | date_test | c_load | c_weight | monitorId | strength | density | str_percent | age |
+------+------------+--------+----------+-----------+--------------------+---------+--------------------+------+
| 853 | 2017-02-11 | 100 | 8020 | 124 | 4.444444444444445 | 2.3763 | 11.111111111111112 | 1 |
| 854 | 2017-02-13 | 305 | 7940 | 124 | 13.555555555555555 | 2.3526 | 33.88888888888889 | 3 |
| 855 | 2017-02-17 | 450 | 7910 | 124 | 20 | 2.3437 | 50 | 7 |
| 856 | 2017-02-17 | 460 | 8040 | 124 | 20.444444444444443 | 2.3822 | 51.11111111111111 | 7 |
| 857 | 2017-03-10 | 765 | 8020 | 124 | 34 | 2.3763 | 85 | 28 |
| 858 | 2017-03-10 | 735 | 8040 | 124 | 32.666666666666664 | 2.3822 | 81.66666666666667 | 28 |
+------+------------+--------+----------+-----------+--------------------+---------+--------------------+------+
我想为每个力量与年龄绘制一个折线图,但是' age'当在同一天测试超过1个样本时,列包含重复数据。
如果我只想要年龄计数大于1的平均强度,我需要使用什么查询?
答案 0 :(得分:0)
您可以尝试使用GROUP BY
来计算出现多次的age
值的平均强度:
SELECT age, AVG(strength) AS avg_strength
FROM yourTable
GROUP BY age
请注意,我们甚至不需要包含特殊逻辑来处理age
出现多次的情况,因为单个年龄值的平均值恰好等于该单个值。
如果要保留相同数量的原始点,则可以使用子查询:
SELECT t1.age, t2.avg_strength -- and other columns, if needed
FROM yourTable t1
INNER JOIN
(
SELECT age, AVG(strength) AS avg_strength
FROM yourTable
GROUP BY age
) t2
ON t1.age = t2.age