我有一个包含Twitter数据的数据库,该数据库已进行了一些情感分析。我想建立一个SQL查询,列出每个位置的情感分析方式的相对计数
理想情况下,结果看起来像:
TWEET_LOCATION POSITIVE NEGATIVE
Boston, MA 2846 5039
Chipotle 2846 5039
Orlando, Fl 2846 5039
除了数字是每个位置的正向和负向tweet数量,而不是正向和负向总数的总数。
我现有的尝试如下:
SELECT TWEET_LOCATION,
(SELECT COUNT(DEFLATE_SENTIMENT)
FROM DEFLATEGATE
WHERE DEFLATE_SENTIMENT = 'positive'
OR DEFLATE_SENTIMENT = 'slightly positive') as Positive,
(SELECT COUNT(DEFLATE_SENTIMENT)
FROM DEFLATEGATE
WHERE DEFLATE_SENTIMENT = 'negative'
OR DEFLATE_SENTIMENT = 'slightly negative') as Negative
FROM DEFLATEGATE
GROUP BY TWEET_LOCATION
ORDER BY count DESC
此外,我想我可以使用选择案例语句来弄清楚该如何做,但我的老师希望我们使用嵌套的子查询。
我认为您需要条件聚合:
SELECT TWEET_LOCATION
SUM(CASE WHEN DEFLATE_SENTIMENT IN ('positive', 'slightly positive') THEN 1 ELSE 0 END) as num_positive,
SUM(CASE WHEN DEFLATE_SENTIMENT IN ('negative', 'slightly negative') THEN 1 ELSE 0 END) as num_negative
FROM DEFLATEGATE
GROUP BY TWEET_LOCATION;