【问题标题】:SQLite filter on a renamed column not working重命名列上的 SQLite 过滤器不起作用
【发布时间】:2021-05-03 06:03:51
【问题描述】:

我正在尝试在选择重命名字段时对其应用过滤器,但它不起作用

这是我要过滤的交易表:

id      stock   buy sell    price       trans_date              buy_sell
2       AAPL    10  0       141.77      28-Jan-2021 04:59:58    Buy
2       AAPL    5   0       141.77      28-Jan-2021 04:59:19    Buy
2       SSSS    5   0       14.83       28-Jan-2021 04:59:47    Buy
2       NFLX    5   0       522.8       28-Jan-2021 05:00:11    Buy
2       MSFT    5   0       232.88      28-Jan-2021 05:01:47    Buy
2       NFLX    2   0       522.8       28-Jan-2021 04:59:37    Buy
2       SSSS    0   2       14.83       28-Jan-2021 05:00:52    Sell
2       SSSS    0   3       14.83       28-Jan-2021 05:02:47    Sell
2       AAPL    0   4       141.83      28-Jan-2021 05:06:18    Sell
2       AAPL    0   2       141.77      28-Jan-2021 05:06:18    Sell

下面是我正在尝试运行的查询

SELECT stock, sum(buy - sell) as share, trans_date, avg(price) as price FROM stocks 
WHERE user_id = 2  GROUP BY stock;

我正在尝试显示所有数据,但不显示任何带有 0 的股票,例如下面的 ssss tock

stock   share   trans_date              price
AAPL    9       28-Jan-2021 04:59:19    141.77
MSFT    5       28-Jan-2021 05:01:47    232.88
NFLX    7       28-Jan-2021 04:59:37    522.8
SSSS    0       28-Jan-2021 04:59:47    14.83

有什么建议吗?从过滤后的表中删除该 SSSS

【问题讨论】:

    标签: python mysql sql sqlite


    【解决方案1】:

    使用having子句如下:

    SELECT stock, sum(buy - sell) as share, trans_date, avg(price) as price FROM stocks 
    WHERE user_id = 2  GROUP BY stock
    having sum(buy - sell) <> 0 -- or sum(buy) = sum(sell)
    

    【讨论】:

    • 你好,亲爱的,这个确实有效having sum(buy - sell) &lt;&gt; 0
    • 太棒了!!继续编码。
    猜你喜欢
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多