2017-04-25 12 views
0

mySQL文に問題があります。ステートメント1は私には正しい答えを与えますが、ステートメント2にスケールした場合、カウント値が大幅に減少しています。私はGROUP BYの根本的な問題を見逃していますか?年、月ごとにグループ化するとカウント値がオフになる

私が本当に必要とするのは、達成された最大3カウントと月と年を返すことです。解決策はありますか?前もって感謝します!

編集:私は、これはあなたが単にあなたのコードを見て、目の新鮮なペアを必要とする恐ろしい例一つだと思い

SELECT 
    count(t2.rec_date), any_value(t2.rec_date) 
FROM results t1 
    join patients t2 
    on t1.barcode = t2.barcode 
WHERE test LIKE '%ssc%' 
and year(rec_date) = 2017 
and month(rec_date) = 2; 
>>> 366, '2017-02-01' 

SELECT 
    count(t2.rec_date) AS count, 
    any_value(rec_date) 
FROM results t1 
    join patients t2 
    on t1.barcode = t2.barcode 
WHERE test LIKE '%ssc%' 
GROUP BY EXTRACT(YEAR_MONTH FROM run_date) 
ORDER BY count DESC 
LIMIT 3; 
>>> 415, 2017-02-28 
>>> 373, 2017-01-31 
>>> 365, 2016-10-04 
+0

2017-02のasme結果が得られるはずです。 366対415は本当に興味があります。 –

+0

です。それは私を夢中にさせている。私は手でデータセットを検証しました。それが私にGROUP BY – kevincicero

+2

のすべての理解を持っているとは信じられませんでしたが、1つは 'run_date'と他の' rec_date'に従ってグループ化されています。 –

答えて

1

full_group_by = SQLモードを使用しました。

rec_dateフィールドの年と月に基づく最初のクエリフィルタ。

run_dateフィールドから年と月までの2番目のクエリグループ。

これらのフィールドが何らかの形で結ばれていない限り、これはカウントの違いを説明しなければならないと思います。

+0

うわー!良いキャッチ。 –

関連する問題