使用SQL显示给定数据元素的小计

问题描述 投票:0回答:1

我有一个包含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

此外,我想我可以使用选择案例语句来弄清楚该如何做,但我的老师希望我们使用嵌套的子查询。

sql
1个回答
0
投票

我认为您需要条件聚合:

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;
© www.soinside.com 2019 - 2024. All rights reserved.