【问题标题】:Creating indvidual columns with SQL使用 SQL 创建单个列
【发布时间】:2023-04-10 03:45:01
【问题描述】:

我是 sql 新手,对这个包非常陌生。 SQL 在 Watson DashDB 中运行。在过去的几个小时里,我一直在努力寻找正确的代码。

  • 代码试图完成一些事情。
    1. 创建一个名为 SENTIMENT 的新视图
    2. 将两个表连接在一起
    3. 让新表显示 4 列,其中包含 A. USER_SCREEN_NAME、B. 推文总数、C. 正面情绪计数 D. 负面情绪计数

下面的代码只创建 2 列,我需要 4 列。SPACEX_SENTIMENTS.SENTIMENT_POLARITY 包含负数和正数。

CREATE VIEW SENTIMENT
AS
(SELECT SPACEX_TWEETS.USER_SCREEN_NAME, SPACEX_SENTIMENTS.SENTIMENT_POLARITY
FROM dash015214.SPACEX_TWEETS
LEFT JOIN dash015214.SPACEX_SENTIMENTS ON 
SPACEX_TWEETS.MESSAGE_ID=SPACEX_SENTIMENTS.MESSAGE_ID);

SELECT USER_SCREEN_NAME, COUNT(1) tweetsCount
FROM dash015214.SENTIMENT
GROUP BY USER_SCREEN_NAME
HAVING COUNT (1)>1
ORDER BY COUNT (USER_SCREEN_NAME) DESC
FETCH FIRST 20 ROWS ONLY;

【问题讨论】:

  • 编辑您的问题并提供示例数据和所需的结果。了解数据是什么以及您想要生成什么是最好的起点。

标签: sql dashdb


【解决方案1】:

您的视图SENTIMENT 看起来每条推文有一行,有两列:用户名和极性列。根据您的评论,我假设极性列可以具有“正”或“负”的值。我想你可以通过这个查询得到你想要的:

SELECT 
    USER_SCREEN_NAME, 
    COUNT(1) AS "Total Tweets",
    COUNT(CASE SENTIMENT_POLARITY WHEN 'POSITIVE' THEN 1 ELSE NULL END) AS "Positive Tweets",
    COUNT(CASE SENTIMENT_POLARITY WHEN 'NEGATIVE' THEN 1 ELSE NULL END) AS "Negative Tweets"
FROM 
    SENTIMENT
GROUP BY USER_SCREEN_NAME
HAVING COUNT(1) > 1
ORDER BY COUNT(1) DESC;

这将为您提供至少 2 条推文(这是您想要的吗?),并告诉您每个用户的推文数量以及有多少是正面的,有多少是负面的。将 " 替换为您的 SQL 用来指示列名的任何内容。

【讨论】:

    猜你喜欢
    • 2016-03-27
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 2012-08-31
    • 1970-01-01
    相关资源
    最近更新 更多