我正在嘗試撰寫一個子查詢,將相同的 TickerSymbols 以及兩個值(例如 0.0001 和 1)之間的 TickerSentiment 分組在一起
示例行
TickerID CommentID TickerSymbol TickerSentiment
3 3 DTE 0
4 3 SPY 0
7 6 MATX -0.5574
9 8 ETSY -0.5216
12 11 ROKU -0.0926
14 13 ROKU -0.7351
15 14 BROKU 0
17 16 SPY -0.1531
18 17 CHGG 0.3612
29 28 AMP 0
詢問:
SELECT TickerSymbol,
(
SELECT count(p.TickerSymbol)
FROM Ticker p
WHERE p.TickerSymbol IS NOT "NONE" AND p.TickerSentiment BETWEEN 0.000000001 and 1
) as "Positive Sentiment"
FROM Ticker
WHERE TickerSymbol IS NOT "NONE"
輸出
TickerSymbol Positive Sentiment
DTE 3573
SPY 3573
MATX 3573
ETSY 3573
ROKU 3573
ROKU 3573
BROKU 3573
SPY 3573
期望輸出
TickerSymbol Positive Sentiment
DTE 101
SPY 46
MATX 24
ETSY 91
ROKU 24
BROKU 51
uj5u.com熱心網友回復:
您的示例代碼在 MySQL 中不起作用
但我認為你正在尋找
SELECT DISTINCT t.TickerSymbol, pos_stat as 'Positive Sentiment'
FROM Ticker t INNER JOIN
(
SELECT p.TickerSymbol , COUNT(*) as pos_stat
FROM Ticker p
WHERE p.TickerSymbol NOT LIKE 'NONE' AND p.TickerSentiment BETWEEN 0.000000001 and 1
GROUP BY p.TickerSymbol
) t1 ON t.TickerSymbol = t1.TickerSymbol
WHERE TickerSymbol NOT LIKE 'NONE'
uj5u.com熱心網友回復:
問題是您忘記在子查詢中指定相關條件。這就是為什么你的結果都是一樣的。
在線示例:https : //www.db-fiddle.com/f/htMM5HutjHrKkGEx7TPR4j/0
SELECT Distinct TickerSymbol,
(
SELECT count(p.TickerSymbol)
FROM Ticker p
WHERE p.TickerSentiment BETWEEN 0.000000001 and 1
and Ticker.TickerSymbol = p.TickerSymbol
) as "Positive Sentiment"
FROM Ticker
WHERE TickerSymbol != "NONE"
第二個問題是當你比較字串時,你應該使用!=而不是is not. 就像@nbk 說它在 MySQL 中不是有效的 sql。檔案提到IS用于布林值或空值比較。
https://dev.mysql.com/doc/refman/8.0/en/expressions.html#expression-syntax
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/362606.html
標籤:sql
