我需要在MySQL或SQL中进行查询,向我显示每日,半年和月平均值。日期是Unix格式,但它们也已转换为标准格式,如下所示。
我有下表(fecha unix - Unix date,fecha normal - regular date,Nombre - name):
Nombre | fecha unix| fecha normal |value |
JOHANNA ANDREA |1273533527 |2010-05-10 19:18:47 |1.2 |
ANA MARIA |1273533572 |2010-05-10 19:19:32 |2.0 |
CARLOS MANUEL |1273542938 |2010-05-10 21:55:38 |2.0 |
LEONARDO ANGEL |1273543988 |2010-05-10 22:13:08 |1.6 |
PATRICIO HERNAN |1273546656 |2010-05-10 22:57:36 |1.8 |
LILIAN CECILIA |1273585499 |2010-05-11 09:44:59 |2.0 |
ROSA MERCEDES |1273590042 |2010-05-11 11:00:42 |1.8 |
GABRIEL TORO |1461837600 |2016-04-28 07:00:00 |1.2 |
FELIPE RUIZ |1461837680 |2016-04-28 07:01:20 |1.6 |
CARLOS TAPIA |1461847680 |2016-04-28 09:48:00 |1.8 |
当天的预期结果:
fecha | value
2010-05-10 | 1.7
2010-05-11 | 1.9
2016-04-28 | 1.5
月份:
2010-05 | 1.7
2010-04 | 1.5
感谢您的回复。
答案 0 :(得分:1)
您可以按日期分组
<div ID="menuContent" runat="server">
<!-- #Include virtual="/menu.aspx" -->
</div>
按月计算
SELECT DATE(FROM_UNIXTIME('fecha unix')) AS fecha,
AVERAGE(*) AS Average
FROM MyPostsTable
GROUP BY DATE(FROM_UNIXTIME('fecha unix')
ORDER BY fecha
我认为按周计算
SELECT DATE(FROM_UNIXTIME('fecha unix')) AS fecha,
AVERAGE(Value) AS Average
FROM MyPostsTable
GROUP BY MONTH(FROM_UNIXTIME('fecha unix'))
ORDER BY fecha;
答案 1 :(得分:0)
警告 - 未经测试,可能出现语法错误,但希望您明白这一点。
白天:
select date_format(fecha_normal, '%Y-%m-%d') fecha, avg(Value) from tbl group by 1
按月:
select date_format(fecha_normal, '%Y-%m') fecha, avg(Value)
from tbl group by 1
半年:
select concat(year(fecha_normal), '-',
if(month(fetcha_normal) < 7, 1, 2)) fecha, avg(Value)
from tbl group by 1
这里的想法是我们使用特殊格式结合SQL函数逻辑(if)来构建一年中上半年的第1年字符串,以及第二年中构建第二年的字符串。
按年份:
select year(fecha_normal) fecha, avg(Value) from tbl group by 1