1

製品の売上高の表があります。各セールには、アイテムコード(シリアル番号など)と日付があります。

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月に2回、6月に1回、7月に1回販売されていることがわかります。パーツ「b」は2月に1回、4月に1回販売されます。そして、パートcは3月に1回販売されます。

たとえば、1年のうち2か月以上にわたって販売されたすべての部品のリストを返したいのですが。したがって、これはパーツ「a」と「b」を返します。そのしきい値を1年の>=3か月に上げると、部分「a」のみが返されます。どの月でも構いません。ただし、パート'a'は3か月で発生するため、スコアは3になります。パート'b'、スコアは2になります。

もちろんこれはPHPで処理できますが、純粋にmysqlで処理できますか?

4

3 に答える 3

1
SELECT item_code
FROM ProductSales
GROUP BY item_code
HAVING COUNT(DISTINCT MONTH(date)) >= @threshold

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

于 2013-03-13T18:30:44.587 に答える
1

あなたはこのようなことをすることができます。

SELECT item_code, COUNT(distinct MONTH(date)) as month_count from product_sales
GROUP BY item_code
HAVING month_count > 1
于 2013-03-13T18:31:34.793 に答える
0
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
于 2013-03-13T18:42:41.670 に答える