簡體   English   中英

MySQL計算一定價格范圍之間的列表

[英]MySQL count listing between certain price range

從網站上的另一篇文章中,我采用了以下類型的查詢。 他們正在使用總和,我正在尋找列表的數量。

SELECT
COUNT(IF(sold_price < 20,1,0)) as 'Under 20',
COUNT(IF(sold_price BETWEEN 20 and 50,1,0)) as '20 - 50',
COUNT(IF(sold_price BETWEEN 50 and 100,1,0)) as '50 - 100',
COUNT(IF(sold_price BETWEEN 100 and 250,1,0)) as '100 - 250',
COUNT(IF(sold_price BETWEEN 250 and 500,1,0)) as '250 - 500',
COUNT(IF(sold_price BETWEEN 500 and 1000,1,0)) as '500 - 1000',
COUNT(IF(sold_price BETWEEN 1000 and 2000,1,0)) as '1000 - 2000',
COUNT(IF(sold_price > 2000,1,0)) as 'Over 2000'
FROM listings
where current_batch = 'Y'

我的所有結果都以相同的數字返回

Under 20    20 - 50 50 - 100    100 - 250   250 - 500   500 - 1000  1000 - 2000 Over 2000
94665   94665   94665   94665   94665   94665   94665   94665

有沒有人有任何關於這樣做的建議,或者如果這可以通過計數完成?

MySQL文檔說明如下( http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html#function_count ):

COUNT(expr) Returns a count of the number of non-NULL values of expr in the rows retrieved by a SELECT statement

所以替換:

IF(sold_price BETWEEN 20 and 50,1,0)

通過

IF(sold_price BETWEEN 20 and 50,1,NULL)

在查詢中使用SUM而不是COUNT,如:

SELECT
SUM(CASE WHEN our_price <= 10000 THEN 1 ELSE 0 END) AS p10000,
SUM(CASE WHEN our_price >= 10001 AND our_price <= 25000 THEN 1 ELSE 0 END) AS p25000,
SUM(CASE WHEN our_price >= 25001 AND our_price <= 50000  THEN 1 ELSE 0 END) AS p50000,
SUM(CASE WHEN our_price >= 50001 AND our_price <= 75000  THEN 1 ELSE 0 END) AS p75000,
SUM(CASE WHEN our_price >= 75001 AND our_price <= 100000  THEN 1 ELSE 0 END) AS p100000,
SUM(CASE WHEN our_price >= 100001 AND our_price <= 150000  THEN 1 ELSE 0 END) AS p150000,
SUM(CASE WHEN our_price >= 151000 AND our_price <= 200000  THEN 1 ELSE 0 END) AS p200000,
SUM(CASE WHEN our_price > 200000 THEN 1 ELSE 0 END) AS p200001
FROM products;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM