0

このタイトルが意味をなさない場合は、提案を提供してください!

私は単純な(っぽい)統計クエリを作成しています.2つの列は、アイテムを表示するときに開始された時間と終了した時間です。私がやりたかったのは、特定のアイテムのビューをバウンスとして分類できる回数を返すことでした。

現在、クエリは必要なすべての情報を返すことができます。ここまではかなり単純ですが、この部分に問題があります。

これは、現在間違ったアプローチだと確信しています。

IF(((UNIX_TIMESTAMP(v.time_ended) - UNIX_TIMESTAMP(v.time_started)) < 5), 1,0) bounce

各行の UNIX_TIMESTAMP(v.time_ended) を取り、それを UNIX_TIMESTAMP(v.time_started) から差し引く必要があります。この値が「バウンス」として分類している 5 より小さいかどうかを確認し、そうであれば +バウンス列に 1。

1行のデータしか返していませんが、これを実行する方法がわかりませんが、助けていただければ幸いです。

ありがとう

ジョニー

更新されたコード

SELECT i.id, 
i.title, 
i.slug, 
i.buyer_id as buyer_id, 
i.date_added as date_added, 
a.slug as area_slug, 
COUNT(o.id) as offers, 
COUNT(v.item_id) as total_item_views, 
(COUNT(v.item_id) / COUNT(o.id)) conversion,

SUM(CASE WHEN v.time_ended - v.time_started < 5 THEN 1 ELSE 0 END) 

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=3
4

1 に答える 1

1

私はあなたがこのようなものが欲しいと思います:

SELECT Item
      ,SUM(CASE WHEN v.time_ended - v.time_started < 5 THEN 1 ELSE 0 END))
FROM table
GROUP BY Item

更新されたコードから、グループが完全に欠落しています:

SELECT i.id, i.title, i.slug, i.buyer_id as buyer_id, i.date_added as date_added, a.slug as area_slug, 
    COUNT(o.id) as offers, 
    COUNT(v.item_id) as total_item_views, 
    (COUNT(v.item_id) / COUNT(o.id)) conversion,
    SUM(CASE WHEN v.time_ended - v.time_started < 5 THEN 1 ELSE 0 END) 
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=3
GROUP BY  i.id, i.title, i.slug, i.buyer_id, i.date_added, a.slug
于 2013-06-06T16:35:53.450 に答える