2013-03-22 55 views
0

因此,我着手瞭解是否可以/應該將我的網站的寬度從1000px增加到1200px,因爲顯然90%以上的用戶的屏幕高於1024px。您是否可以使用多個GROUP BY來改進mySQL查詢

我想按用戶分組,但是如果他們使用不同的屏幕,他們會多次計數。 這給了我一個所有大小的列表,但我只想要不同的寬度並計算出現的次數。

我得到了我想要的結果,但認爲SQL查詢非常糟糕。

第一個問題:你能提高我下面的SQL查詢:

SELECT width,COUNT(width) 
FROM (
    SELECT width 
    FROM user_hit 
    WHERE width>=1024 
    GROUP BY userId,width 
    ORDER BY width 
) AS widths 
GROUP BY width 
ORDER BY COUNT(width) DESC 

隨着我使用PHP與屏幕來確定用戶的%以上1240px

第二個問題的結果:你可以實現這一結果使用,僅在MySQL和PHP沒有

結果是86.7%的屏幕比1240px

第三個問題更大:我應該在將我的網站寬度從1000px - > 1200px預計很快,9/10用戶將獲得更好的體驗,而1/10會有一個令人討厭的視圖?

我知道我可以不同的方式顯示它爲不同的用戶,但我寧願有一個單一的視圖

+0

您沒有正確使用GROUP BY。我在這裏也沒有看到子查詢的要點。 – Kermit 2013-03-22 17:39:01

+0

我忘了補充,我的網站是信息密集的,因此額外的寬度是有價值的,將使用 – DrK 2013-03-22 17:40:16

+0

是的我不認爲SQL是非常好的,我正在尋求幫助改進它 – DrK 2013-03-22 17:41:43

回答

0

爲什麼你需要子查詢?以下查詢應該是ENOGH

SELECT width, count(distinct userId) as count 
FROM user_hit 
WHERE width>=1024 
GROUP BY width 
ORDER BY width 
+0

我可以證實以下SQL確實產生了相同的結果作爲我的上述問題,這是更好的: SELECT寬度,計數(不同用戶id)作爲計數 FROM user_hit WHERE寬度> = 1024 GROUP BY寬度 ORDER BY計數DESC – DrK 2013-03-22 20:56:45

0

答案:

1),我認爲沒有必要提高你的代碼,因爲它做了什麼你需要。 2)使用PHP可以幫助您獲得一些結果(OOP),例如獲取用戶的屏幕大小,瀏覽器類型,OS類型等等。但mySQL與存儲這些數據有關。

3)這取決於在您的網站上註冊的用戶數量。您還需要獲得每週註冊用戶的百分比。如果該比例爲1/10而不具有該尺寸。是的,最好增加網站的寬度。

Regards