我有两个数据集,df1和df2,其中我想要执行一个连接,设置一个过滤器,然后执行一个聚合。
df1
version host date
pat a16 12/1/2019
fam a16 12/1/2019
emp a16 12/1/2019
dan a16 12/1/2019 df2
name purpose date
pat hi 12/1/2019
fam cat 12/1/2019
hello dog 12/1/2019
dan bird 12/1/2019以下是连接结果:
version host date name purpose date
pat a16 12/1/2019 pat hi 12/1/2019
fam a16 12/1/2019 fam cat 12/1/2019期望的
version host date name purpose date
2 a16 12/1/2019 2 2 12/1/2019做
select count(df1.version), df1.host, df1.date, count(df2.name),count(df2.purpose), df2.date
from df1
left join df2
on df1.version = df2.name AND
df1.date = df2.date
where df2.purpose = 'hi' OR df2.purpose = 'cat'
group by df1.host但是,对于所需列的计数,我没有得到所需的结果。如有任何建议,将不胜感激。
发布于 2021-01-21 23:13:08
添加另外两个group by子句应该可以修复。
试试GROUP BY df1.host, df2.date, df1.date
发布于 2021-01-22 01:08:41
我在mysql中创建了表df1和df2,它使用脚本提供了所需的结果。我的表在结构上可能与您的表略有不同,您提到了SQL,并且在SQL和mySql的工作方式上存在差异。您使用的是SQL还是mySQL?
https://stackoverflow.com/questions/65837069
复制相似问题