簡體   English   中英

mysql-選擇一年中少於x個月的行

[英]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

http://sqlfiddle.com/#!2/810c9/3

你可以做這樣的事情。

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.

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