2013-10-04 80 views
-1

我有很多網站用戶,我想選擇所有網站並按訪問者數量排序。用戶可以通過兩種方式指定訪問者數量。他們可以手動輸入它作爲一個字符串,它存儲在下面的查詢中的fb.visitor中。如何使用2列按最高值排序結果?

第二種方式是,他的用戶在他們的網站上安裝了一個Javascript跟蹤代碼,然後向表tracking_visits添加條目,總訪問量爲count(tv.id)。

我想能夠以2種方式對此結果進行排序。

1)我想使用兩列在頂部和底部得到最高的結果。示例的結果應該是:

  • 99'947(COUNT(tv.id))
  • 75'412(COUNT(tv.id))
  • 40'000(fb.visitors)
  • 37'482(COUNT(tv.id))
  • 30'000(fb.visitors)

2)第二類我希望能得到所有COUNT(tv.id)之上,最高第一,然後獲得fb.visitors最高的第一個以下。例如:

  • 99'947(COUNT(tv.id))
  • 75'412(COUNT(tv.id))
  • 37'482(COUNT(tv.id))
  • 40000(fb.visitors)
  • 30'000(fb.visitors)

我目前的查詢看起來是這樣的:

SELECT cs.userid, fb.visitors, COUNT(tv.id) 
FROM campaigns_signups cs 
INNER JOIN fe_blogs fb ON cs.userid = fb.userid 
INNER JOIN tracking_visits tv ON tv.blogid = cs.userid 
WHERE tv.visitdate 
BETWEEN "2013-09-04" 
AND "2013-10-04" 
AND cs.campaignid = "97" 
AND cs.status < "4" 
GROUP BY tv.blogid 
ORDER BY COUNT(tv.id) , fb.visitors DESC 

請注意查詢中的日期和整數僅僅是示例。

該查詢的問題是,它只會選擇具有tracking_visits中條目的結果。我想選擇一個結果,在這裏我獲得了在tracking_visits中擁有訪問者數量的博客和在fb.visitors中擁有訪問者數量的博客。

回答

1

對於你的第一個任務,你可以使用ORDER BY GREATEST(COUNT(tv.id), fb.visitors) DESCDocumentation on GREATEST.對於第二個,你會想要使用UNIONDocumentation on UNION.

如果對於您的第一項任務,您希望每個站點生成兩行(一個用於兩個值中的最大值,另一個用於最小值),則可以使用UNION再次實現此目的。

+0

第二他可以使用一個案例 – AdrianBR

0

你被的價值源泉尋找greatest

select greatest(ifnull(fb.visitors,0),count(tv_id)) from.... order by 1 

select greatest(ifnull(fb.visitors,0),count(tv_id)) from.... 
order by 
case when greatest(ifnull(fb.visitors,0),count(tv_id))=fb.bisitors then 2 else 1 end, greatest(ifnull(fb.visitors,0),count(tv_id)) 

二階的情況下訂單,然後按價值大小

0

選擇計數(TV的第二選項。id)首先,我可以通過以下查詢來完成此操作:

SELECT *, tv.tracked_visits 
FROM campaigns_signups cs 
INNER JOIN fe_blogs fb ON cs.userid = fb.userid 

LEFT JOIN ( 
SELECT blogid, COUNT(id) AS "tracked_visits" 
FROM tracking_visits 
WHERE visitdate 
BETWEEN "2013-09-04" 
AND "2013-10-04"            
GROUP BY blogid 
) AS tv ON tv.blogid = cs.userid 
WHERE cs.campaignid = :campaignid 
AND cs.status < :status 
ORDER BY tv.tracked_visits DESC , fb.visitors DESC