[爆卦]qualify sql用法是什麼?優點缺點精華區懶人包

為什麼這篇qualify sql用法鄉民發文收入到精華區:因為在qualify sql用法這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者criky (立業成家)看板R_Language標題[問題] R 與 SQL 對應的寫法/想法時...


[問題類型]:

程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)

[軟體熟悉度]:
新手(沒寫過程式,R 是我的第一次)

[問題敘述]:
R與SQL在整理/查詢資料上有些類似的用法,
現在想要用R做SQL做的事,
中間卡住,來請教各位大大了~

[程式範例]:
SQL:

SELECT
A.DBName
,A.TableName
,B.Count
,C.LADate
,C.LATime #最後要的5個欄位
FROM
Table_A A #主要的表,join最後結果row n不變
LEFT JOIN
( #子查詢1 取 count
SELECT A.DBName,
A.TableName,
sum(A.Count) as Count
FROM Count A
LEFT JOIN
User B
ON A.UserName=B.UserName
GROUP BY A.DBName,A.TableName
WHERE B.User_Type IN ('A','B')
) B
ON A.DBName = B.DBName
AND A.TableName = B.TableName
LEFT JOIN
( #子查詢2 取 LADate,LAtime
select DBName,
TableName,
LADate,
LATime
from
LA
QUALIFY ROW_NUMBER() OVER (
PARTITION BY DBName,TableName
ORDER BY LADate DESC, LATime DESC)=1
#以LADate DESC,LaTime DESC排序後,取第一列
) C
ON B.DBName = C.DBName
AND B.TableName = C.TableName

R寫的想法也是和SQL類似,
先寫子查詢,最後再3個表left join,
只寫了2個子查詢,第2段卡住(紅字部分)
若用group_by取top1不太對,
應該要取LADate同一列的LATime

sub_q1<-left_join(x=count,y=user,by="UserName") %>% 
group_by(DBName,TableName) %>%
summarise(sum(Count))

sub_q2<-select(LA,DBName,TableName,
LADate,LATime) %>%
order_by LADate desc,LATime desc %>%
group_by(DBName,TableName) %>% ??

[環境敘述]:
R version 3.3.2 (2016-10-31)
Platform: i386-w64-mingw32/i386 (32-bit)
Running under: Windows >= 8 (build 9200)

[關鍵字]:
SQL

選擇性,也許未來有用


--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.147.47.152
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1481984054.A.B9D.html
※ 編輯: criky (27.147.47.152), 12/17/2016 22:31:14
abc2090614: 是我的話就用RODBC直接寫SQL了... 12/18 00:00
abc2090614: 你是要取每個group裡的第一列? 我看不太懂QUALIFY 12/18 00:06
hermeslu: 同意樓上 會SQL的話取資料和資料整理在SQL做,讓R做計算 12/18 08:38
※ 編輯: criky (27.147.47.152), 12/18/2016 13:00:32
criky: 是取第一列沒錯 12/18 13:00
abc2090614: 如果是取第一列的話用dplyr的summarize() 裡面取的 12/19 22:33
abc2090614: 函數用 first() 12/19 22:34
abc2090614: 應該說是用groupy(aa) %>% summarize(bb=first(cc)) 12/19 22:34
criky: get it! Thanks! 12/20 07:46
clansoda: hi,this is approach from package data.table 12/22 09:29
clansoda: dat[,.SD[1],the group variable name] 12/22 09:29

你可能也想看看

搜尋相關網站