在SQL应用中添加计数列从SQL查询到数据帧

时间:2017-12-12 09:33:31

标签: r shiny

我有R脚本,用于计算在一个订单中获取每对产品的比例,我创建了一个闪亮的应用程序来查看我的结果My App 这是我的服务器代码

server <- function(input,output){
  data<- reactive({
    DF %>% filter(FirstItem == input$Item, X.Correlation > 0, SecondItem != input$Item) %>% arrange(desc(X.Correlation))
  })

  output$Itemcorr <- renderTable({data()})

  output$plot <- renderPlot({
    barplot(data()$X.Correlation,main="X.Correlation Distribution", 
            xlab="SecondItems",ylab="Percent",xlim=c(1,60),ylim = c(0,100),
            col=c("darkblue","red"),names.arg =data()$SecondItem)

  })

}

但我想在我的应用中添加另一列,其中查看( SecondItem *( X.Correlation / 100))的订单数量。我试图用cbind来做那个

 renderTable({cbind(data(),(data()$X.Correlation/100)*dbGetQuery(con,"SELECT
 Count(WHWorkOrderHeaderId) FROM   Warehouse.WHWorkOrderDetails  INNER
 JOIN Warehouse.WHWorkOrderHeader AS WHH ON
 Warehouse.WHWorkOrderDetails.WHWorkOrderHeaderId = WHH.ID  INNER JOIN
 Warehouse.StockItems  ON Warehouse.WHWorkOrderDetails.StockItemId =
 Warehouse.StockItems.Id  WHERE Type = 'IO' AND OtherLangDescription =
 data()$SecondItem ORDER BY OtherLangDescription ASC"))})

但我不能根据R

调用sql查询

1 个答案:

答案 0 :(得分:-1)

我通过定义具有SQL查询值的新数据框然后将其与现有DF合并来解决这个问题:

OrdersNum <- dbGetQuery(con, "
SELECT
OtherLangDescription ,
Count(WHWorkOrderHeaderId) AS Orders_Of_SecondItem
FROM   Warehouse.WHWorkOrderDetails 
INNER JOIN Warehouse.WHWorkOrderHeader AS WHH
ON Warehouse.WHWorkOrderDetails.WHWorkOrderHeaderId = WHH.ID 
INNER JOIN Warehouse.StockItems 
ON Warehouse.WHWorkOrderDetails.StockItemId = Warehouse.StockItems.Id 
WHERE Type = 'IO'
GROUP By OtherLangDescription
ORDER BY OtherLangDescription ASC")

DF1 <- merge(DF, OrdersNum, by.x = "SecondItem", by.y = "OtherLangDescription")
DF<-DF1[,c(2,1,3,4)]