【问题标题】:MYSQL count rows under two different conditions and return value as output if counts are equalMYSQL 计算两种不同条件下的行数,如果计数相等,则返回值作为输出
【发布时间】:2019-04-07 05:01:56
【问题描述】:

我有一张桌子:

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 新手,如有任何建议,我们将不胜感激!

【问题讨论】:

    标签: mysql count equality


    【解决方案1】:

    一种简单的方法是按股票代码聚合并断言所有收盘价都大于 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;
    

    【讨论】:

      猜你喜欢
      • 2013-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-19
      相关资源
      最近更新 更多