Sql 如何基于两个条件联接两个表并对一列求和?
我正在对Sql 如何基于两个条件联接两个表并对一列求和?,sql,pyspark,Sql,Pyspark,我正在对pyspark进行一些类似sql的查询。我有两张表table和table1 table.show() +--------------------+---------------+-------------------+----------+----------+-----+ | identifier|identifier_type| timestamp|device_lat|device_lon|count| +-------------------
pyspark
进行一些类似sql的查询。我有两张表table
和table1
table.show()
+--------------------+---------------+-------------------+----------+----------+-----+
| identifier|identifier_type| timestamp|device_lat|device_lon|count|
+--------------------+---------------+-------------------+----------+----------+-----+
|ccf7758a-155f-4eb | gaee|2020-03-17 13:00:00| 40.764214| -73.98244| 19|
|ccf7758a-155f-4eb | gaee|2020-03-17 14:00:00| 40.761467| -73.98039| 14|
|ccf7758a-155f-4eb | gaee|2020-03-17 00:00:00| 40.760067| -73.97952| 12|
|ccf7758a-155f-4eb | gaee|2020-03-17 15:00:00| 40.759586| -73.98214| 9|
|2f4bd30c-0a59-4da | gaee|2020-03-18 23:00:00| 42.693657| -73.80621| 7|
|2f4bd30c-0a59-4da | idxx|2020-03-17 19:00:00| 40.768757|-73.621605| 7|
及
如果相同的标识符出现在相同的时间戳上,并且具有类似于
table1.show()
+--------------------+---------------+-------------------+-----+
| identifier|identifier_type| timestamp|count|
+--------------------+---------------+-------------------+-----+
|ccf7758a-155f-4eb | gaee|2020-03-17 13:00:00| 34|
|ccf7758a-155f-4eb | gaee|2020-03-17 14:00:00| 31|
|ccf7758a-155f-4eb | gaee|2020-03-17 00:00:00| 25|
|ccf7758a-155f-4eb | gaee|2020-03-17 15:00:00| 9|
|ccf7758a-155f-4eb | gaee|2020-03-19 15:00:00| 9|
|2f4bd30c-0a59-4da | idxx|2020-03-18 23:00:00| 14|
|2f4bd30c-0a59-4da | idxx|2020-03-17 16:00:00| 7|
|2f4bd30c-0a59-4da | idxx|2020-03-17 19:00:00| 7|
如果表中的列完全相同,那么首先将所有列进行
合并就更容易了
SELECT identifier, identifier_type, timestamp, SUM(count) as count
FROM (
SELECT identifier, identifier_type, timestamp, count
FROM table
UNION ALL
SELECT identifier, identifier_type, timestamp, count
FROM table1
)
GROUP BY identifier, identifier_type, timestamp
编辑:实际上“相同”列不是必需的,但它们应该具有按数据类型兼容的列标识符、标识符类型、时间戳、计数
如果表具有完全相同的列,那么首先将所有列合并就更容易了
SELECT identifier, identifier_type, timestamp, SUM(count) as count
FROM (
SELECT identifier, identifier_type, timestamp, count
FROM table
UNION ALL
SELECT identifier, identifier_type, timestamp, count
FROM table1
)
GROUP BY identifier, identifier_type, timestamp
编辑:实际上“相同”列不是必需的,但它们应该有列identifier、identifier\u type、timestamp、count
与数据类型兼容在SQL中,您可以联合所有的两个表,然后使用按标识符分组,identifier\u type,timestamp
计算总和(计数)
。这有帮助吗?在SQL中,您可以合并所有
两个表,然后使用按标识符、标识符类型、时间戳进行聚合计算总和(计数)
。这有用吗?谢谢。我是否可以添加条件,其中时间戳>=2020-03-19
。我想要的是2020-03-19之后的数据
当然,请在分组之前进行操作
line谢谢。我是否可以添加条件,其中时间戳>=2020-03-19
。我想要的是2020-03-19之后的数据
当然,在按行分组之前进行