これは私のクエリです:
SELECT DISTINCT id, stat, date, user_id
FROM data AS T1
WHERE 2.0 >= (
SELECT avg1
FROM (
SELECT stat, AVG(value) AS avg1
FROM data
WHERE date > SUBTIME(NOW(), MAKETIME(168, 0, 0))
GROUP BY stat_name) b1
WHERE stat = T1.stat
AND id = T1.id)/
(
SELECT avg2
FROM (
SELECT stat, AVG(value) AS avg2
FROM cata
WHERE date > SUBTIME(NOW(), MAKETIME(336, 0, 0))
AND date <= SUBTIME(NOW(), MAKETIME(168, 0, 0))
GROUP BY stat) b2
WHERE stat = T1.stat
AND id = T1.id)
ORDER BY id;
アイデアは、今週の平均値が先週の平均値の 2 倍を超える統計の表を作成することです。
私の問題は次のとおりです。過去 1 週間の増加を表す、各統計の MAX(今週の値) - MAX(先週の値) を表す列 diff_values を選択したいと考えています。(基本的に、今日の統計は昨日の統計に増加分を足したものです。) WHERE 句と同様のサブクエリを 2 つ作成しないと方法が思いつきませんが、そうするとクエリの実行時間が長くなります。データはかなり大きなテーブルなので、非常に長いです。
既存のサブクエリ間で数学を分割する方法はありますか?