mysql - MYSQL 计算两种不同条件下的行数,如果计数相等,则返回值作为输出
问题描述
我有一张桌子:
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
而且我想知道在两种不同条件下比较行数并在计数相等时返回代码的正确方法。(最终,只有在整个 3 月的收盘价 > 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;
推荐阅读
- asp.net - 如何在 Asp.net 的本地环境中启动实时站点源代码
- c# - 如何从 xamarin 表单中的列表视图中获取所选项目索引?
- python - 在另一个 DataFrame 的字符串中从一个 DataFrame 中查找单词
- python-3.x - Plotting and removing a vertical line inside a loop matplotlib/seaborn
- flutter - 我可以从 Google Play Flutter 获取用户 ID 吗?
- php - 如何使用特殊字符将simplexml_load_file文件URI流
- unix - Rust 守护进程最佳实践
- python - 如何计算轮廓中的像素数?
- node.js - setDefaultsOnInsert 不适用于 upsert
- javascript - 连接到数据库 REDIS 的 Svelte 自定义存储