gpt4 book ai didi

sql - 根据其他列筛选列

转载 作者:行者123 更新时间:2023-11-29 12:04:48 24 4
gpt4 key购买 nike

我有一个包含以下字段的clicks表:

  • 日期
  • page_id
  • 点击次数

它的数据看起来像:

date           page_id     clicks
2015-01-01 1 20
2015-01-02 2 10
2015-01-02 2 5
2015-01-01 4 10
2015-01-02 5 5

还有另一个包含页面元信息的表,pages。有些页面是用英语写的,有些是用法语写的。英文的ID为1,2,3,法文的ID为2,3,4

我正在尝试创建一个数据集,将它们分成如下列:

date         french_page_clicks    english_page_clicks
2015-01-01 10 20
2015-01-02 5 15

我发现与此最接近的问题是:https://dba.stackexchange.com/questions/45532/create-multiple-columns-from-a-single-column-filtering-criteria在使用 COUNT(IF(revision = 'pending', 1, NULL)) 作为待定 的地方,他们可以将 1 插入表中。但我需要插入实际的点击总和。

我得到的最远的(不起作用)是:

SELECT
date,
SUM (clicks) AS english_page_clicks IF page_id in (1, 2, 3),
SUM (clicks) AS french_page_clicks IF page_id in (4, 5, 6)
FROM
clicks
GROUP BY date
ORDER BY date ASC

或者更好的是,能够将页面表引用到 SUM() 中,例如:

SELECT
date,
SUM (clicks) AS english_page_clicks IF pages.lang = 'english',
SUM (clicks) AS french_page_clicks IF pages.lang = 'french'
FROM
clicks
INNER JOIN pages ON clicks.page_id = pages.id
GROUP BY date
ORDER BY date ASC

如何筛选列以创建上面的汇总表?

最佳答案

您需要将表达式移动到聚合函数中。试试这个:

SELECT
date,
SUM(case when lang = 'English' then clicks else 0 end) AS english_page_clicks,
SUM(case when lang = 'French' then clicks else 0 end) AS french_page_clicks
FROM
clicks
INNER JOIN pages ON clicks.page_id = pages.id
GROUP BY date
ORDER BY date ASC

Sample SQL Fiddle

关于sql - 根据其他列筛选列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31734668/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com