首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用多个连接时,COUNT返回双精度值

问使用多个连接时,COUNT返回双精度值
EN

Stack Overflow用户
提问于 2015-11-16 04:36:13
回答 1查看 154关注 0票数 0

当我运行这个查询时,我整齐地得到了我想要的结果。

代码语言:javascript
复制
SELECT 
referer_trackings.cookie_first_url AS url,
sum(purchases.price) AS sales, 
count(purchases.id) AS volume
FROM purchases
JOIN referer_trackings 
ON referer_trackings.trackable_id = purchases.id
JOIN items
ON purchases.item_id = items.id
WHERE items.seller_id = '39'
AND referer_trackings.trackable_type = 'Purchase'
AND purchases.workflow_state = 'payment_successful'
GROUP BY referer_trackings.cookie_first_url

这将返回:

代码语言:javascript
复制
url             sales          volume
======================================
UrlName1.com    8743           332
UrlName2.com    234            123
UrlName3.com    2352           2345

这是正确的,但我也将登录页面视图存储在另一个单独的表中,因为我真正需要的是:

代码语言:javascript
复制
url             sales          volume       landing_page_views
===============================================================
UrlName1.com    8743           332          34563
UrlName2.com    234            123          52443
UrlName3.com    2352           2345         84563

为了得到这个结果,我运行这个查询:

代码语言:javascript
复制
SELECT 
referer_trackings.cookie_first_url AS url,
sum(purchases.price) AS sales, 
count(purchases.id) AS volume,
COUNT(DISTINCT product_landing_page_views.id) AS ulpvs
FROM purchases
JOIN referer_trackings 
ON referer_trackings.trackable_id = purchases.id
JOIN items
ON purchases.item_id = items.id
JOIN product_landing_page_views
ON product_landing_page_views.item_id = items.id
WHERE items.seller_id = '39'
AND referer_trackings.trackable_type = 'Purchase'
AND purchases.workflow_state = 'payment_successful'
GROUP BY referer_trackings.cookie_first_url

这会导致数据看起来加倍,而且远远超过实际计数。我知道这是因为打给

代码语言:javascript
复制
JOIN product_landing_page_views
ON product_landing_page_views.item_id = items.id

将行添加到结果中,从而使计数相乘。

所以我的问题是:如何确保在连接product_landing_page_views表时,查询仍然产生正确的计数?

EN

回答 1

Stack Overflow用户

发布于 2015-11-16 04:40:43

试试这个:-

代码语言:javascript
复制
SELECT 
referer_trackings.cookie_first_url AS url,
sum(purchases.price) AS sales, 
count(purchases.id) AS volume,
product_landing_page_views.ulpvs
FROM purchases
JOIN referer_trackings 
ON referer_trackings.trackable_id = purchases.id
JOIN items
ON purchases.item_id = items.id
JOIN (SELECT item_id, count(*) as ulpvs from product_landing_page_views GROUP BY item_id) as product_landing_page_views
ON product_landing_page_views.item_id = items.id
WHERE items.seller_id = '39'
AND referer_trackings.trackable_type = 'Purchase'
AND purchases.workflow_state = 'payment_successful'
GROUP BY referer_trackings.cookie_first_url

(这是假设我正确理解了您的表的结构。如果没有的话,很抱歉)。

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

https://stackoverflow.com/questions/33724743

复制
相关文章

相似问题

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