【问题标题】:How can I select all rows based on the AVG calculated in another column?如何根据在另一列中计算的 AVG 选择所有行?
【发布时间】:2020-04-07 13:14:50
【问题描述】:

我正在尝试选择符号满足“volume”列上的 AVG 大于 100000 的条件的所有行。 有点像 -

SELECT * FROM etf_daily WHERE symbol, avg(volume)>1000000 GROUP BY symbol

我有这张桌子 enter image description here

【问题讨论】:

  • 使用 HAVING 子句设置函数条件。

标签: sql


【解决方案1】:

您似乎想要聚合和HAVING 子句:

SELECT symbol, avg(volume)
FROM etf_daily 
GROUP BY symbol
HAVING AVG(volume) > 1000000 ;

编辑:

根据您的评论,使用窗口函数:

SELECT d.*
FROM (SELECT d.*, 
             AVG(volume) OVER (PARTITION BY symbol) as symbol_avg
      FROM etf_daily d
     ) d
WHERE symbol_avg > 1000000 ;

【讨论】:

  • 谢谢,但该命令只为整个符号组选择一行。目标是计算每个符号的 AVG,如果结果满足条件 > 100000,则选择符号的所有行。
猜你喜欢
  • 2019-02-11
  • 2019-04-24
  • 2019-03-04
  • 2022-01-24
  • 1970-01-01
  • 2021-01-25
  • 2015-08-26
  • 2013-11-09
  • 2014-04-03
相关资源
最近更新 更多