小编Rei*_*ica的帖子

dplyr:组中的最大值,不包括每行中的值?

我有一个数据框,如下所示:

> df <- data_frame(g = c('A', 'A', 'B', 'B', 'B', 'C'), x = c(7, 3, 5, 9, 2, 4))
> df
Source: local data frame [6 x 2]

  g x
1 A 7
2 A 3
3 B 5
4 B 9
5 B 2
6 C 4
Run Code Online (Sandbox Code Playgroud)

我知道如何x为每个组添加一个具有最大值的列g:

> df %>% group_by(g) %>% mutate(x_max = max(x))
Source: local data frame [6 x 3]
Groups: g

  g x x_max
1 A 7     7
2 A …
Run Code Online (Sandbox Code Playgroud)

r greatest-n-per-group dplyr

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

选择不同的行,同时按最大值分组

我目前有下表:

ID   |  Name    |  EventTime            |  State
1001 |  User 1  |  2013/07/22 00:00:05  |  15
1002 |  User 2  |  2013/07/23 00:10:00  |  100
1003 |  User 3  |  2013/07/23 06:15:31  |  35
1001 |  User 1  |  2013/07/23 07:13:00  |  21
1001 |  User 1  |  2013/07/23 08:15:00  |  25
1003 |  User 3  |  2013/07/23 10:00:00  |  22
1002 |  User 2  |  2013/07/23 09:18:21  |  50
Run Code Online (Sandbox Code Playgroud)

我需要的是state每个userid与上一个eventtime相似的不同之处:

ID   | …
Run Code Online (Sandbox Code Playgroud)

sql sql-server-2008 greatest-n-per-group

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

查找预订重叠以查看日期可用性

我请求你的帮助写一个查询来检查MySql中房间的可用性.目前我有这种表:

 ROOM |    FROM    |     TO
 -----------------------------
  101 | 2014-08-09 | 2014-08-14 
  102 | 2014-08-09 | 2014-08-14 
   ...           ...        ...
Run Code Online (Sandbox Code Playgroud)

所以我从2014年8月9日到2014年8月14日预订了房间101 ,我查询可用性的查询看起来像=

SELECT order_id FROM booking 
WHERE `ROOM` = '101' 
AND (`FROM` BETWEEN '2014-08-08' AND '2014-08-20') 
AND (`TO` BETWEEN '2014-08-08' AND '2014-08-20')
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我将检查日期之间的可用性

   What i trying to archive is this
Order  --------09++++++++++13--------------
Check1 -----08+++++++++++++++++++++++++17-- Not availble
Check2 -----------------12+++++++++++++17-- Not availble
Check3 -----------10----------------------- Not availble
Check4 -----------10+11-------------------- Not availble
Check5 -----------------------14+++++++17-- Available
Check6 --07++++09-------------------------- Not availble
Check7 …
Run Code Online (Sandbox Code Playgroud)

mysql sql

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

Oracle配置文件定义CONNECT_TIME

用于配置文件的CONNECT_TIME的定义,根据oracle 文档

CONNECT_TIME
指定会话的总运行时间限制,以分钟为单位.

我猜他们所说的连接时间是整个过程执行的时间.

有没有办法限制在过程中执行查询的连接时间?例如,如果过程有3个执行查询,并且任何查询超过指定的时间限制,则应中止或终止该会话.

oracle

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

如果存在则创建或更改触发器

我正在尝试确定是否应该创建或更改并触发.我的代码如下.

IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL
    ALTER TRIGGER Sales.bonus_reminder
    ON Sales.SalesPersonQuotaHistory
    AFTER INSERT
    AS RAISERROR ('Notify Compensation', 16, 10);
else
    CREATE TRIGGER Sales.bonus_reminder
    ON Sales.SalesPersonQuotaHistory
    WITH ENCRYPTION
    AFTER INSERT, UPDATE 
    AS RAISERROR ('Notify Compensation', 16, 10);
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

  • 其他附近的语法不正确
  • 创建触发器应该是批处理中唯一的语句.

这段代码应该如何?

sql t-sql sql-server triggers

6
推荐指数
2
解决办法
6420
查看次数

捕获 SQL 中最新的列值更改

如何使用一个 SQL 查询获取一列中最新值更改的日期?

可能的数据库情况:

Date        State

2012-11-25  state one
2012-11-26  state one
2012-11-27  state two
2012-11-28  state two
2012-11-29  state one
2012-11-30  state one
Run Code Online (Sandbox Code Playgroud)

因此结果应返回 2012-11-29 作为最新更改状态。如果我按州值分组,我将获得第一次在数据库中拥有该州的日期。

该查询将按州对表进行分组,并在日期字段中显示该州的最新创建日期。

根据给定的输入,输出将是

Date               State

2012-11-30        state one
2012-11-28        state two
Run Code Online (Sandbox Code Playgroud)

mysql sql greatest-n-per-group

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

在列中定义的窗口内求和

我想为组中的sum(x)每一data.table行实现N个下一行,其中N是window列中的值.

用于生成样本数据的代码:

set.seed(100)
ids <- 1:100
x <- floor(runif(100, 1, 100))
groups <- floor(runif(100, 1, 10)) * 10
window <- floor(runif(100, 1, 5))

library('data.table')
data <- data.table(ids, x, groups, window)
setkey(data, groups, ids)
Run Code Online (Sandbox Code Playgroud)

顶行:

 ids  x groups window
 1:   3 55     10      4
 2:   9 55     10      1
 3:  13 28     10      1
 4:  16 67     10      3
 5:  26 17     10      3
 6:  30 28     10      2
 7:  36 89     10      2
 8: …
Run Code Online (Sandbox Code Playgroud)

performance r sum window-functions data.table

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

如何用R testthat生成jUnit fie

我有R代码(不是包),我想用验证测试覆盖验证测试,在Jenkins中使用输出.

我可以从两个演示代码结构的文件开始:

# -- test.R
source("test-mulitplication.R")

# -- test-mulitplication.R
library(testthat)
test_that("Multipilation works ", {
  res <- 5 * 2
  expect_equal(res, 10)
})
Run Code Online (Sandbox Code Playgroud)

运行后,我想获得一个xml文件,其中包含每个测试文件的结果或单个文件中的所有测试.

我注意到reportertestthat中有一个功能,但大部分功能似乎都在内部.目前尚不清楚如何保存测试结果以及功能的灵活性.

不幸的是,该部分的文档并不完整.

编辑

我现在找到了一种方法来测试目录,使用更好的语法和junit输出选项:

# -- tests/accpetance-tests.R
options(testthat.junit.output_file = "test-out.xml")
test_dir("tests/")

# -- tests/test-mulitplication.R
library(testthat)
test_that("Multipilation works ", {
  res <- 5 * 2
  expect_equal(res, 10)
})
Run Code Online (Sandbox Code Playgroud)

我相信这会在记者中产生一个XML对象,但我仍然没有看到如何将它保存到文件中.

我试着test_dir打电话with_reporter,但这并没有多大作用.

junit r jenkins testthat

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

如何模拟rest API的http响应?

我正在寻找在testthat框架内模拟其余 API 响应的最简单方法。

用法示例与此类似:

with_mock_api(
  request, 
  response, 
  {
      call_to_function_with_api_call()
      # expectations check
  }
)
Run Code Online (Sandbox Code Playgroud)

因此,测试将通过而不调用真正的 API。

  • request 指将在 api 包装函数内部完成的 http 请求的定义;
  • response 指为了模拟而缓存的响应对象。

api r http mocking testthat

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

在SQL语句中将NOT IN替换为LEFT JOIN

我写了两个运行良好的查询,但是它们确实很慢:

SELECT director
FROM movies
WHERE id NOT IN (SELECT movie_id FROM stars_in_movies WHERER star_id = %s);

SELECT first_name, last_name
FROM stars
WHERE id NOT IN (SELECT star_id
                 FROM stars_in_movies
                 WHERE movie_id IN(SELECT movie_id
                                   FROM stars_in_movies
                                   WHERE star_id = %s))
Run Code Online (Sandbox Code Playgroud)

我尝试替换NOT IN为INNER JOIN,LEFT JOIN但到目前为止没有任何尝试过。

以下是表的架构:

电影:

 - id (primary key),
 - title (title of the movie), 
 - year (year of release)
 - director (director of the movie)
Run Code Online (Sandbox Code Playgroud)

星星:

 - id (primary key) …
Run Code Online (Sandbox Code Playgroud)

mysql sql database

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