【问题标题】:sql query with avg price per day and group by day具有每天平均价格和按天分组的 sql 查询
【发布时间】:2022-01-16 23:57:12
【问题描述】:

我有这张桌子

+------+------------------+-----------+-----------+
| Name |       Time       | LowPrice  | HighPrice |
+------+------------------+-----------+-----------+
| #AAA | 12/13/2021 17:12 |    383.12 |     393.9 |
| #BBB | 12/13/2021 17:13 |   1110.34 |    1114.1 |
| #AAA | 12/13/2021 17:13 |    384.15 |     399.2 |
| #BBB | 12/13/2021 17:14 |   1112.34 |    1119.1 |
+------+------------------+-----------+-----------+

这个查询:

SELECT "Name", "Time", "LowPrice", "HighPrice"
FROM rp_prices
WHERE "Time" > NOW() - INTERVAL '10 day';

我只需要得到一个价格,我认为是平均价格,并按天分组,类似这样

+------+-------------+-----------+-----------+
| Name |    Time     | LowPrice  | HighPrice |
+------+-------------+-----------+-----------+
| #AAA | 12/13/2021  |    383.12 |     393.9 |
| #BBB | 12/13/2021  |   1110.34 |    1114.1 |
+------+-------------+-----------+-----------+

感谢您的帮助

【问题讨论】:

标签: sql postgresql


【解决方案1】:
SELECT "Name", date_trunc('day', "Time"), avg("LowPrice"), avg("HighPrice")
  FROM rp_prices
 WHERE "Time" > now() - interval '10 day'
 GROUP BY "Name", date_trunc('day', "Time")

【讨论】:

  • 谢谢,效果很好
【解决方案2】:

类似

SELECT "Name", "Time", 
       min("LowPrice") as min_lp, 
       max("HighPrice") as max_hp, 
       avg("LowPrice") as avg_lp,
       avg("HighPrice") as avg_hp,
       avg(("HighPrice" - "LowPrice")/2) as avg_middle 
FROM rp_prices
where "Time" > now() - interval '10 day'
group by "Name", "Time";

可能会给你你正在寻找的答案。 允许在 Group By 子句中使用函数。如果“时间”列的精度高于天数,则可以使用它们

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 2020-05-05
    • 2010-12-12
    • 2017-05-25
    • 1970-01-01
    • 2022-06-28
    • 2017-03-07
    相关资源
    最近更新 更多