我试图通过以下查询从雅典娜检索数据:
SELECT DISTINCT cop.shop_id,
cop.product_id,
avg(cop.position) AS avg_position,
cp.kes
FROM data_1 AS cop
JOIN data_2 AS cp
ON cop.product_id = cp.product_id
WHERE cop.site_id = 1
AND cop.product_id IS NOT NULL
GROUP BY cop.shop_id, cop.product_id, cp.kes 但是,数据中有四列: product_id、shop_id、avg_position、kes。
一些行在kes列中同时带有NA和non。我只想用以下条件操作数据:
如果
product_id、shop_id和avg_position是相同的),如果kes列中有NA和Non-NA,只需保留非NA行并删除kes中包含NA的行。但是,kes中没有非NA,就不要删除它。我该怎么做?
发布于 2020-06-08 22:06:53
我认为您希望在kes上进行聚合
SELECT
cop.shop_id,
cop.product_id,
AVG(cop.position) AS avg_position,
MAX(cp.kes) kes
FROM data_1 AS cop
JOIN data_2 AS cp
ON cop.product_id = cp.product_id
WHERE cop.site_id = 1 AND cop.product_id IS NOT NULL
GROUP BY cop.shop_id, cop.product_id 聚合函数忽略null值;因此MAX(cp.kes)为您提供了cp.kes的最高非null值。另一方面,如果cp.kes的所有值都是组内的null,则max()给出null。
附带注意:DISTINCT和GROUP BY在一起没有意义(尽管这仍然是有效的GROUP BY );GROUP BY保证SELECT列表中没有重复的值。
https://stackoverflow.com/questions/62271888
复制相似问题