GROUP BY VEHICLE_NO HAVING STD_SUM <> 0 改成GROUP BY后的数据条数大于5
时间: 2024-02-18 21:59:26 浏览: 17
好的,你的第一个问题是如何将 GROUP BY VEHICLE_NO HAVING STD_SUM <> 0 改为分组后的数据条数大于 5?
首先,我们需要使用 COUNT 函数来统计每个分组的数据条数。然后,我们可以在 HAVING 子句中加入条件 COUNT(*) > 5 来筛选出数据条数大于 5 的分组。
具体的 SQL 语句如下:
```
SELECT VEHICLE_NO, SUM(STD) AS STD_SUM
FROM your_table
GROUP BY VEHICLE_NO
HAVING STD_SUM <> 0
HAVING COUNT(*) > 5
```
这条 SQL 语句会先按照 VEHICLE_NO 分组,然后计算每个分组中的 STD 总和。接着,会筛选出 STD 总和不为 0 的分组,并进一步筛选出数据条数大于 5 的分组。
相关问题
优化GZL_sum <- GZL_12 %>% group_by(username) %>% summarise(total_GZL = sum(GZL))
这个代码已经相对比较简洁和优化了,但是如果你想要进一步优化,可以考虑使用 `dplyr` 包中的 `summarise()` 函数的快捷方式 `summarise_at()` 或者 `summarise_all()`。这两个函数可以对指定的列或者所有列应用相同的汇总函数。例如,你可以使用下面的代码完成相同的任务:
```
library(dplyr)
GZL_sum <- GZL_12 %>%
group_by(username) %>%
summarise_at(vars(GZL), sum, na.rm = TRUE, name = "total_GZL")
```
这里的 `summarise_at()` 函数中,`vars(GZL)` 指定了要对哪些变量应用汇总函数,`sum` 表示使用 `sum` 函数计算总和,`na.rm = TRUE` 表示忽略缺失值,`name = "total_GZL"` 表示新的变量名为 `total_GZL`。
GZL_sum <- GZL_12 %>% group_by(username) %>% summarise(total_GZL = sum(GZL))
这条代码表示对 `GZL_12` 数据集按照 `username` 进行分组,然后计算每个用户 `GZL` 列的总和,并将结果保存为一个新的数据集 `GZL_sum`。其中 `%>%` 是管道操作符,它可以将前面一步的结果传递给后面一步作为输入。在这个例子中,`GZL_12` 会作为第一个参数传递给 `group_by()` 函数,然后 `group_by()` 函数的结果会作为第一个参数传递给 `summarise()` 函数。最终的结果是一个新的数据集 `GZL_sum`,其中每一行表示一个用户的总 `GZL` 值。