首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SQL中筛选带有条件的行?

如何在SQL中筛选带有条件的行?
EN

Stack Overflow用户
提问于 2020-06-08 22:02:20
回答 1查看 244关注 0票数 0

我试图通过以下查询从雅典娜检索数据:

代码语言:javascript
复制
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_idshop_idavg_position是相同的),如果kes列中有NA和Non-NA,只需保留非NA行并删除kes中包含NA的行。但是,
  • ,如果kes中没有非NA,就不要删除它。

我该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-08 22:06:53

我认为您希望在kes上进行聚合

代码语言:javascript
复制
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

附带注意:DISTINCTGROUP BY在一起没有意义(尽管这仍然是有效的GROUP BY );GROUP BY保证SELECT列表中没有重复的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62271888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档