0
我有以下SQL查询:SQL在双选择查询得到的双精度值
SELECT
a.url,
b.lpvs,
a.volume,
a.sales_usd,
a.sales_eur,
a.sales_gbp,
a.sales_jpy
FROM (
SELECT
referer_trackings.cookie_first_url AS url,
count(purchases.id) AS volume,
SUM(CASE WHEN purchases.currency = 'USD' THEN purchases.price ELSE 0 END) AS sales_usd,
SUM(CASE WHEN purchases.currency = 'EUR' THEN purchases.price ELSE 0 END) AS sales_eur,
SUM(CASE WHEN purchases.currency = 'GBP' THEN purchases.price ELSE 0 END) AS sales_gbp,
SUM(CASE WHEN purchases.currency = 'JPY' THEN purchases.price ELSE 0 END) AS sales_jpy
FROM purchases
JOIN referer_trackings
ON referer_trackings.trackable_id = purchases.id
JOIN items
ON purchases.item_id = items.id
WHERE items.seller_id = '6'
AND referer_trackings.trackable_type = 'Purchase'
AND purchases.workflow_state = 'payment_successful'
GROUP BY referer_trackings.cookie_first_url
ORDER BY volume DESC
) AS a, (SELECT
count(referer_trackings.id) AS lpvs
FROM referer_trackings
JOIN product_landing_page_views
ON product_landing_page_views.id = referer_trackings.trackable_id
JOIN items
ON items.id = product_landing_page_views.item_id
WHERE referer_trackings.trackable_type = 'ProductLandingPageView'
AND items.seller_id = '6')
AS b
这收率这样的结果:
url lpvs volume sales_usd sales_eur sales_gbp sales_jpy
=======================================================================
url1 1082 3 9.99 9.99 9.99 0.0
url2 1082 1 0.0 9.99 0.0 0.0
^
的LPVS列的第二行(值:1082,用下面的小箭头)应该是0而不是1082.值1082只对第一行是正确的。
我知道这是由于加入/选择时翻倍的缘故,但我似乎无法摆脱这种困惑并让查询恰到好处。
我可以从我的ruby代码中调用两个查询并合并结果。这将是快速解决方案。不过,我想保持这个清洁,并去一个纯粹的SQL解决方案。我感觉我很亲密。
如果有人知道如何使用ActiveRecord来做到这一点,那也会很棒:-)。
谢谢你的时间!
=====基于拉胡尔的调整EDIT =====
这是查询的结果:
url lpvs volume sales_usd sales_eur sales_gbp sales_jpy
=======================================================================
url1 7 7 19.98 29.97 19.98 0.0
url2 1 1 0.0 9.99 0.0 0.0
^ ^ ^ ^ ^
^1, row 1 => value should be 1082
^1, row 2 => value should be 0
^2, row 1 => value should be 3
^2, row 2 => value should be 1
^3, row 1 => value should be 9.99 (current value is doubled somehow)
^4, row 1 => value should be 9.99 (current value is tripled somehow)
^5, row 1 => value should be 9.99 (current value is doubled somehow)
你是说,理想的结果是可能没有第二个查询? – Corstiaan
@Corstiaan,是的,如果有帮助,请参阅编辑答案。 – Rahul
谢谢:-)。但是,查询使lpvs列的值与卷列完全相同...... lpvs的值1082正确,但仅适用于第一行,而不是第二行。 – Corstiaan