栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

MYSQL sum()用于不同的行

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MYSQL sum()用于不同的行

我可能是错的,但据我了解

  • conversions.id* 是表 转换主键 *
  • stats.id* 是表 统计信息主键 *

因此,对于每个conversions.id,您最多影响一个link.id。

您的要求有点像做2组的笛卡尔积:

[clicks]SELECt *FROM links LEFT OUTER JOIN stats ON links.id = stats.parent_id[conversions]SELECt *FROM links LEFT OUTER JOIN conversions ON links.id = conversions.link_id

对于每个链接,您将获得sizeof([clicks])x sizeof([conversions])行

如前所述,您可以通过以下方式获得请求中唯一身份转化的次数:

count(distinct conversions.id) = sizeof([conversions])

这种独特的方法可以删除笛卡尔积中的所有[clicks]行

但显然

sum(conversions.value) = sum([conversions].value) * sizeof([clicks])

就您而言,

count(*) = sizeof([clicks]) x sizeof([conversions])count(*) = sizeof([clicks]) x count(distinct conversions.id)

你有

sizeof([clicks]) = count(*)/count(distinct conversions.id)

所以我会用

SELECt links.id,    count(DISTINCT stats.id) as clicks,    count(DISTINCT conversions.id) as conversions,    sum(conversions.value)*count(DISTINCT conversions.id)/count(*) as conversion_value FROM links LEFT OUTER JOIN stats ON links.id = stats.parent_id LEFT OUTER JOIN conversions ON links.id = conversions.link_id GROUP BY links.id ORDER BY links.created desc;

让我发布!杰罗姆



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/408212.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号