小编top*_*hef的帖子

选定的非聚合值必须是关联组的一部分

我在Teradata中有两个表:Table_A和Table_B.他们之间是LEFT JOIN.之后我正在制作SELECT语句,其中包含两个表的属性:

SELECT
attribute_1
attribute_2
...
attribute_N
Run Code Online (Sandbox Code Playgroud)

后来,我使用SUM函数进行某些计算.这些函数看起来像这样:

SUM (
CASE WHEN Attribute_1 > 2 THEN attribute_2*1.2
ELSE 0
End
Run Code Online (Sandbox Code Playgroud)

(在此示例中,使用选择部分中的属性).

但我也在CASE部分属性中使用了不在select语句中的东西 - 有点谎言:

SUM (
CASE WHEN Attribute_X > 2 THEN attribute_Y*1.2
ELSE 0
End
Run Code Online (Sandbox Code Playgroud)

当然最后我正在做GROUP BY 1,2,...,N

我得到的错误是"选定的非聚合值必须是关联组的一部分." 此外,我已经检查了SELECT部分​​中所选属性数十亿倍,它是N.问题是 - 为什么我会收到此错误?是因为我在SUM部分使用,即CASE部分属性(attribute_X和attribute_Y),它们不包含在SELECT部分​​中?

最终陈述的蓝图看起来很像.像这样:

INSERT INTO table_new

SELECT
attribute_1,
attribute_2,
...
attribute_N,

SUM (
CASE WHEN Attribute_1 > 2 THEN attribute_2*1.2
ELSE 0
End
) as sum_a,

SUM (
CASE WHEN Attribute_X > 2 THEN attribute_Y*1.2
ELSE 0
End
) …
Run Code Online (Sandbox Code Playgroud)

sql group-by case teradata

3
推荐指数
1
解决办法
3万
查看次数

为什么xlim会切断连续刻度的边界值?

给定数据框:

d = structure(list(bin_start = 1:12, 
                   bin_count = c(12892838L, 1921261L, 438219L, 126650L, 41285L, 
                                 15948L, 6754L, 3274L, 1750L, 992L, 703L, 503L)), 
              .Names = c("bin_start", "bin_count"), 
              class = "data.frame", 
              row.names = c(NA, 12L))
Run Code Online (Sandbox Code Playgroud)

我可以用stat="identity"以下方法构建直方图:

ggplot(d) +
  geom_histogram(aes(x=bin_start, y=bin_count), stat="identity", 
                 colour="black", fill="white") +
  scale_x_continuous(breaks=1:12)
Run Code Online (Sandbox Code Playgroud)

看起来像这样:

在此输入图像描述

对长尾不满意我限制x比例(相当于xlim=c(1,6)):

ggplot(d) +
  geom_histogram(aes(x=bin_start, y=bin_count), stat="identity", colour="black", fill="white") +
  scale_x_continuous(breaks=1:12, limits=c(1,6)) 
Run Code Online (Sandbox Code Playgroud)

但我得到边界点x=1x=6消失:

在此输入图像描述

注意,y轴仍然像边界点一样缩放属于情节美学.它是一个功能还是一个bug?

plot r ggplot2 axis-labels

3
推荐指数
1
解决办法
1152
查看次数

Teradata中的DECIMAL类型

有人可以解释我在Teradata中得到的以下结果:

SELECT TYPE(CAST (2.3 AS DECIMAL(18,4)) * CAST (2.3 AS DECIMAL(18,4))  )
Run Code Online (Sandbox Code Playgroud)

结果是:

DECIMAL(18,8)
Run Code Online (Sandbox Code Playgroud)

我期待DECIMAL(18,4)

sql type-conversion teradata

2
推荐指数
1
解决办法
1万
查看次数

具有捕获组和反向引用的正则表达式如何在Java中匹配?

我很难理解某个Java正则表达式会匹配什么:

"<(\\w+)></\\1>"
Run Code Online (Sandbox Code Playgroud)

我已经阅读了这篇http://docs.oracle.com/javase/tutorial/essential/regex/

但是我仍然无法弄清楚那个表达式会匹配什么,尤其是那个\1部分.我可以看到,这<(\w+)>是一个匹配任何单词的占有量词,但我不明白为什么使用()根据教程的匹配组.

至于第二部分,我只是不知道\1会匹配什么.我试过了

"001123344556678899".replaceAll("\\1", ""); 
Run Code Online (Sandbox Code Playgroud)

因为我认为它可能只是匹配一个数字,但它给了我回到我的字符串,因为没有任何替代.

java regex

1
推荐指数
1
解决办法
203
查看次数

有两个向量是否有更好的方法来测试一个是否包含在另一个?

鉴于两个向量:

x = c('a','b')
lookup = c('a','c','d','e','f')
Run Code Online (Sandbox Code Playgroud)

如果在每个元件的测试x存在于lookup.一种方法:

all(!is.na(match(x, lookup)))
Run Code Online (Sandbox Code Playgroud)

我发现这个解决方案对R来说有点冗长,并且想知道是否有更好/更短的版本.

r vector string-matching

1
推荐指数
1
解决办法
55
查看次数