0

我正在使用以下查询返回一些统计信息,但我遇到了一个小问题。查询工作正常,但有时报价不正确。在错误的情况下,它会显示报价与 item_views 的编号相同。我真的不知道为什么。想知道是否有人可以帮助我。

SELECT i.id, 
i.title, 
i.slug, 
i.seller_id as seller_id, 
i.date_added as date_added, 
a.slug as area_slug, 
COUNT(o.id) as offer, 
COUNT(v.item_id) as total_item_views, 
(COUNT(v.item_id) / COUNT(o.id)) * 100 conversion, 
(UNIX_TIMESTAMP(v.time_ended) - UNIX_TIMESTAMP(v.time_started)) / 60 difference_minutes,
SUM(CASE WHEN v.time_ended - v.time_started < 10 THEN 1 ELSE 0 END) bounce,
COUNT(DISTINCT v.session_id) unique_views

FROM item as i

LEFT JOIN offer as o
ON i.id = o.item_id

LEFT JOIN viewed_item as v
ON i.id = v.item_id

INNER JOIN area as a
ON a.id = i.area_id

WHERE i.id = 1

谢谢你的时间

强尼

4

2 回答 2

1

COUNT(DISTINCT column_name)在您使用联接的任何时候尝试。

可以在此处找到有关 DISTINCT 的更多信息。

于 2013-06-13T03:51:34.670 回答
1

您是否正在尝试获取不同 ID 的计数?这将取决于您的数据和所需的结果。如果您尝试计数的 id 是不同的,那么您可以将其添加到您的计数语句中——COUNT(DISTINCT o.id)例如。

但是,如果您想计算每个表中的全部记录并且这些 id 不是不同的,则需要对每个计数使用子查询。

于 2013-06-13T03:52:24.430 回答