我有一张 table :
PRICE
ticker date close
AAPL 3/20/2019 $100
AAPL 3/21/2019 $101.5
AAPL 3/22/2019 $106.5
GOOG 3/20/2019 $100
GOOG 3/21/2019 $130
GOOG 3/22/2019 $110
MSFT 3/20/2019 $184.5
MSFT 3/21/2019 $188.5
MSFT 3/22/2019 $210
IBM 3/20/2019 $72
IBM 3/21/2019 $70
IBM 3/22/2019 $10
我想知道在两种不同条件下比较行数的正确方法,并在计数相等时返回股票代码。 (最终只有当整个三月收盘价> 100 时才返回股票行情)。所以:
SELECT ticker, COUNT(*) FROM PRICE WHERE close>100 group by ticker;
返回:
| ticker | COUNT(*) |
+--------+----------+
| AAPL | 2 |
| GOOG | 2 |
| MSFT | 3 |
还有
SELECT ticker, COUNT(*) FROM PRICE group by ticker;
返回:
| ticker | COUNT(*) |
+--------+----------+
| AAPL | 3 |
| GOOG | 3 |
| MSFT | 3 |
因此 MSFT 应该是唯一返回输出的代码。
SQL 新手,如有任何建议,我们将不胜感激!
最佳答案
一种简单的方法按股票代码聚合并断言所有收盘价都大于 100:
SELECT ticker -- maybe include COUNT(*), if you want to see the counts
FROM price
GROUP BY ticker
HAVING COUNT(CASE WHEN close <= 100 THEN 1 END) = 0;
关于MYSQL 在两种不同条件下对行进行计数,如果计数相等则返回值作为输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55555781/