我有一张桌子 参议员: sname(键) 党< - 可以是民主党人或共和党人
那是由表加入的 赞助商: sname(fk) legnum
我想创建一个格式如下的表:
paste(
format(my_dates, "%A"),
c("night","morn","afternoon","night")[
cut(as.numeric(format(my_dates,"%H")), c(0,5,11,17,23))
]
)
# [1] "Sunday night" "Sunday afternoon" "Sunday afternoon" "Saturday night"
# [5] "Sunday afternoon" "Sunday afternoon" "Saturday night" "Sunday afternoon"
# [9] "Sunday afternoon" "Sunday afternoon"
****基本上我需要使用参议员名单创建一个表格,并将两个候选人(每个党派一个)赞成一个法案(legnum)。我如何在postresql中执行此操作? *****
|Democrat | Republican | legnum |
|Clinton | McCain | 1234 |
以上是我写的一个不起作用的查询。
答案 0 :(得分:0)
我认为你可以通过条件聚合来做到这一点:
select sp.legnum,
max(case when se.party = 'D' then se.name end) as Democrat,
max(case when se.party = 'R' then se.name end) as Republican
from senators se join
sponsors sp
on sp.sname = se.sname
group by sp.legnum;
如果您希望按方参加所有赞助商的列表,则可以使用array_agg()
或string_agg()
。