[英]mysql - select rows which occur fewer/more than x months of the year
我有一張產品銷售表。 每個銷售都有一個商品代碼(例如序列號)和日期。
item_code | date
a | 2013-01-01
a | 2013-01-18
b | 3013-02-10
c | 2013-03-05
b | 2013-04-09
a | 2013-06-04
a | 2013-07-22
從這些數據中,我可以看到零件代碼“ a”在1月兩次售出,6月一次售出,7月一次售出。 部分“ b”於2月一次出售,4月一次出售。 然后c部分在3月一次售出。
我想返回所有售出零件的清單,例如,一年中2個月或更長時間。 因此,這將返回部分“ a”和“ b”。 如果我將該閾值提高到一年中的== 3個月以上,它將僅返回部分“ a”。 哪幾個月都沒關系。 但是,“ a”部分在3個不同的月份出現,因此得到3分。“ b”部分為2分。
我當然可以用PHP來處理,但是我可以完全在mysql中完成嗎?
SELECT item_code
FROM ProductSales
GROUP BY item_code
HAVING COUNT(DISTINCT MONTH(date)) >= @threshold
你可以做這樣的事情。
SELECT item_code, COUNT(distinct MONTH(date)) as month_count from product_sales
GROUP BY item_code
HAVING month_count > 1
SELECT
pc.*,
count(lpc.item_code) AS TCount
FROM product_sales as pc
INNER JOIN product_sales AS lpc ON lpc.item_code = pc.item_code
GROUP BY pc.item_code
HAVING TCount >= 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.