【问题标题】:How to do a COUNTIF formula with mysql [duplicate]如何用mysql做一个COUNTIF公式[重复]
【发布时间】:2017-06-19 10:53:59
【问题描述】:

我正在查看一些关键字排名,需要返回有关 URL 排名增加、排名降低、保持不变的关键字数量的数据。我的数据如下所示:

URL | Keyword | Position | Previous position | Keyword  Movement

example.com/page1 | things to do london   | 38 | 101| Up
example.com/page2 | mens shoes size 8     | 48 | 94 | Up
example.com/page3 | notebooks             | 22 | 2  | Down
example.com/page4 | macbook pros for sale | 52 | 52 | Same
example.com/page1 | homebrew supplies     | 56 | 46 | Down
example.com/page2 | sql tutorials         | 70 | 39 | Down
example.com/page3 | random seo keywords   | 88 | 36 | Down
example.com/page4 | best albums of 2017   | 94 | 95 | Up
example.com/page5 | fender stratocaster   | 19 | 9  | Down
example.com/page6 | qotsa                 | 91 | 34 | Down

我想要一个显示 URL 的表格,关键字数量增加,不。关键字减少,没有。的关键字保持不变。在 Excel 中,这可以使用 countif 公式完成,但不确定如何使用 mysql 执行此操作。我想要一个如下所示的表格:

URL |Keywords Up |Keywords Down |Keywords remain


example.com/page1 | 1 | 1 | 0
example.com/page2 | 1 | 1 | 0
example.com/page3 | 0 | 2 | 0
example.com/page4 | 1 | 0 | 1
example.com/page5 | 0 | 1 | 0
example.com/page6 | 0 | 1 | 0

我正在寻找一种在“运动”列上进行计数的方法。

谢谢。

【问题讨论】:

  • 基本上,您想要做的是创建一个数据透视表。链接的重复主题描述了静态(预先知道列数 - 这可能是您的情况)和动态(预先不知道列数)旋转。但是,请注意,在应用程序逻辑中执行这种转换可能比在 sql 代码中更有效。

标签: mysql count pivot-table


【解决方案1】:

您可以在 Movement 列上使用条件聚合,并按 URL 分组统计三种类型的动作。

SELECT
    URL,
    SUM(CASE WHEN Movement = 'Up'   THEN 1 ELSE 0 END) AS keywords_up,
    SUM(CASE WHEN Movement = 'Down' THEN 1 ELSE 0 END) AS keywords_down,
    SUM(CASE WHEN Movement = 'Same' THEN 1 ELSE 0 END) AS keywords_remain
FROM yourTable
GROUP BY URL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 2021-01-27
    相关资源
    最近更新 更多