我正在进行一项研究项目,研究使人更有可能投票的因素,重点是人们离开投票站的距离.我是数百万人的完整选民登记和选民历史.有几种方式可以让某人投票(亲自,缺席,早期或临时)或不投票(未注册,注册但未投票,或没有资格投票).我的数据附有一栏(29),表明某人如何在某次选举中投票.NULL表示未注册,V表示亲自等.
对于回归分析,我想为每个选民类型创建一个不同的列(1表示是,0表示否,列号68-74)和另一个1/0列(数字75)表示是否有人投票.我在下面写的代码应该可以解决这个问题,但它在我的计算机上运行速度非常慢,甚至在一小时后也无法进入第1000行.除速度外,它完美无缺.我已被批准使用我大学的超级计算机*,但我想找出一个更快的算法.我的笔记本电脑和超级计算机上都有R和STATA,并且很乐意使用它们.
dcv.new <- read.csv("VoterHist.csv", header=TRUE)
# I previously set columns 68-75 to default to 0
for(i in 1:nrow(dcv.new))
{
if(is.na(dcv.new[i,29]))
{
dcv.new[i,69] <- 1
}
else if(dcv.new[i,29]=="V")
{
dcv.new[i,68] <- 1
dcv.new[i,75] <- 1
}
else if(dcv.new[i,29]=="A")
{
dcv.new[i,70] <- 1
dcv.new[i,75] <- 1
}
else if(dcv.new[i,29]=="N")
{
dcv.new[i,71] <- 1
}
else if(dcv.new[i,29]=="E")
{
dcv.new[i,72] <- 1
}
else if(dcv.new[i,29]=="Y")
{
dcv.new[i,73] <- 1
}
else if(dcv.new[i,29]=="P")
{
dcv.new[i,74] <- 1
dcv.new[i,75] <- 1
}
else if(dcv.new[i,29]=="X")
{ …Run Code Online (Sandbox Code Playgroud) 如果使用GUI在MS SQL Management Studio中创建新触发器,它将为您提供以下模板:
--====================================
-- Create database trigger template
--====================================
USE <database_name, sysname, AdventureWorks>
GO
IF EXISTS(
SELECT *
FROM sys.triggers
WHERE name = N'<trigger_name, sysname, table_alter_drop_safety>'
AND parent_class_desc = N'DATABASE'
)
DROP TRIGGER <trigger_name, sysname, table_alter_drop_safety> ON DATABASE
GO
CREATE TRIGGER <trigger_name, sysname, table_alter_drop_safety> ON DATABASE
FOR <data_definition_statements, , DROP_TABLE, ALTER_TABLE>
AS
IF IS_MEMBER ('db_owner') = 0
BEGIN
PRINT 'You must ask your DBA to drop or alter tables!'
ROLLBACK TRANSACTION
END
GO
Run Code Online (Sandbox Code Playgroud)
我应该使用这个模板吗?
我对触发器一无所知,但我认为我需要使用它们.在这种情况下的目的是在表的插入,我需要更新其中一个字段.
请帮我一下!
如果将项目插入表中,然后我编写一个查询,例如select * from table,为什么结果不符合我的预期?
我正在尝试同时从两个不同的表中删除行.表格看起来像这样:
TABLE - Value
-----------
ID
Field
<some other stuff...>
TABLE - Srch
-----------
Value_ID
Srch_ID
<some other stuff...>
Run Code Online (Sandbox Code Playgroud)
我想删除所有来自行VALUE哪里field等于"成功",并删除该行SRCH链接到VALUE通过value_id.在SRCH那里可以有多个相同的行value_id.
这个SQL语句会是什么样的?
我想在表格中找到具体值的总和和数量.
在我的具体情况下,该表被调用product.该表的列名'id,product_id,quantity和shipping_price.
该表包含:(基于SELECT * FROM product;)
product_id:1 quantity:1 end_price:15 shipping_price:1
product_id:2 quantity:2 end_price:15 shipping_price:0
product_id:1 quantity:1 end_price:15 shipping_price:1
product_id:2 quantity:1 end_price:15 shipping_price:0
product_id:1 quantity:1 end_price:15 shipping_price:1
product_id:3 quantity:1 end_price:15 shipping_price:0
Run Code Online (Sandbox Code Playgroud)
我需要一个SQL语句,将选择行的量与同product_id,得到的总和quantity,end_price和shipping_price.
对于此示例,我希望SQL语句返回第1项:
product_id:1 quantity:3 end_price:45 shipping_price:3
Run Code Online (Sandbox Code Playgroud) 有一个查询运行速度比我想要的慢.查询已经是正确的,我已经重构了它,但我不能让它运行得足够快.在可能的情况下,谓词已经具备了Sarg-able功能.它已经正确使用连接,不请求额外的表,并且不会不必要地复制行或使用嵌套子查询以减慢它的速度.
我不是DBA,我不知道如何选择一个好的索引来加快查询速度.我可以改变桌子结构; 没有DBA负责数据库,我在数据库服务器上拥有这样做的权限.
如何优化SQL查询?
我有以下表格:
users (id,name)
items (id,title)
users_items (user_id,item_id)
Run Code Online (Sandbox Code Playgroud)
users并且items应该是非常自我解释的.users_items确定用户是否"喜欢"某个项目.因此,如果id为5的用户拥有id为7的favourited项,则users_items表将分别保存user_id和item_id的记录(5,7).
我希望能够输出所有项目,但是在每个项目旁边说明当前登录的用户是否喜欢该项目.
显然,我可以获取所有项目,然后循环遍历它们并执行单独的mysql调用,以查看是否从users_items返回任何具有相关用户ID和课程ID的行,但是有一种更好的方法可以在1函数中执行此操作.也许有一些花哨的加入?
提前致谢.
我有一个数据框,叫它A,看起来像这样:
GroupID Dist1 Dist2 ...
1 4 4
1 5 4
1 3 16
2 0 4
2 7 2
2 8 0
2 6 4
2 7 4
2 8 2
3 7 4
3 5 6
...
Run Code Online (Sandbox Code Playgroud)
GroupID是一个因子,Dist1,Dist2是整数.
我有一个派生数据框,SummaryA
GroupID AveD1 AveD2 ...
1 4 8
2 6 2
3 6 5
...
Run Code Online (Sandbox Code Playgroud)
对于每个groupID,我需要找到具有最小值的ROW NUMBER,进行进一步操作,并将数据提取到我的摘要集.例如,我需要:
GroupID MinRowD1
1 1
2 4
3 11
Run Code Online (Sandbox Code Playgroud)
在比赛中,我选择哪个并不重要,但我不知道如何得到这个.我不能使用which(),因为它不能很好地操作因素,我不能使用ave(Fun = min),因为我需要的是位置,而不是最小值.如果我做的事情与每组的最小匹配,我可以有多个匹配,这搞砸了.
有关如何做到这一点的任何建议?
我有一个数据类型为Varchar(MAX)的表变量.
我首先插入值'header'然后基于内连接,我接下来将'Details'插入到同一个表变量中.最后,我正在插入"预告片".
我得到的输出顺序为:'header',然后是'trailer',最后是'details'.
我所需的输出顺序如下:
Header
Detail
Trailer
Run Code Online (Sandbox Code Playgroud)
但是我收到了这个订单:
Header
Trailer
Detail
Run Code Online (Sandbox Code Playgroud)
注意:我无法在选择中使用asc/desc.我按照我需要的顺序插入.
我有一个TableA有两列的表:MyName nvarchar(100)和MyDateTime DateTime.每个MyName具有不同DateTimes的记录可以有多个.我试图返回一个记录集,其中包含MyName表中的每个值,每个值最早MyDateTime.
这可以返回不同的MyNames:
SELECT DISTINCT([MyName]) FROM TableA
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的UNION语句,但我的所有尝试都被DISTINCT()关键字抛弃了.例如,以下查询会查找所有时间,而不仅仅是每个时间的最小值:
SELECT DISTINCT([MyName]), [MyDateTime] FROM TableA
Run Code Online (Sandbox Code Playgroud)
努力想出正确的SQL语法来实现这一目标.有什么帮助吗?