Sqlite 筛选必须至少存在1次的2个值的外观
标题可能不好,想不出更好的 我的评论数据,每个评论都由usernameChannelId分配给一个帐户:Sqlite 筛选必须至少存在1次的2个值的外观,sqlite,filter,appearance,Sqlite,Filter,Appearance,标题可能不好,想不出更好的 我的评论数据,每个评论都由usernameChannelId分配给一个帐户: usernameChannelId | hasTopic | sentiment_sum | commentId a | 1 | 4 | xyxe24 a | 0 | 2 | h5hssd a | 1 | 3
usernameChannelId | hasTopic | sentiment_sum | commentId
a | 1 | 4 | xyxe24
a | 0 | 2 | h5hssd
a | 1 | 3 | k785hg
a | 0 | 2 | j7kgbf
b | 1 | -2 | 76hjf2
c | 0 | -1 | 3gqash
c | 1 | 2 | ptkfja
c | 0 | -2 | gbe5gs
c | 1 | 1 | hghggd
我的代码:
SELECT u.usernameChannelId, avg(sentiment_sum) sentiment_sum, u.hasTopic
FROM total_comments u
WHERE u.hasTopic is True
GROUP BY u.usernameChannelId
HAVING count(u.usernameChannelId) > 0
UNION
SELECT u.usernameChannelId, avg(sentiment_sum) sentiment_sum, u.hasTopic
FROM total_comments u
WHERE u.hasTopic is False
GROUP BY u.usernameChannelId
我想获取所有UsernameChannelId,其中至少有1条hasTopic==0的评论和1条hasTopic==1的评论(以统计方式比较这两个组,并删除仅在topic或offtopic视频中发表评论的用户)
我怎样才能这样过滤呢?这里有一个小技巧可能会有所帮助。首先,你需要熟悉,这里是一个摘录自文件 大小写表达式 CASE表达式的作用类似于其他表达式中的IF-THEN-ELSE 编程语言 出现在CASE关键字和之间的可选表达式 第一个WHEN关键字称为“base”表达式。有两个 CASE表达式的基本形式:具有基本表达式和 那些没有 类似于
CASE的表达式,当hastTopic为False时,如果hastTopic为0,则1 else 0 END
将计算为1。hasTopic的表达式为True
类似
现在,可以对这些情况进行汇总,这将告诉您用户是否有hasTopic为True和hasTopic为False的行
having子句中的类似内容可能会起作用(当然,每个值对应一个)
具有SUM(当hastTopic为False时为1,否则为0结束)>0
(有必要删除WHERE子句,并且不需要UNION查询)