1

私のサイトのユーザーがログインすると、統計に対して複数のクエリが実行されます。

SELECT SUM(earnings) FROM stats WHERE date BETWEEN $start_month AND $end_month
SELECT SUM(earnings) FROM stats WHERE date BETWEEN $start_last_month AND $end_last_month
SELECT SUM(earnings) FROM stats WHERE date BETWEEN $start_year AND NOW()
//etc...

SUM私は、Mysqlエンジンを個別のクエリでこれらすべてに要求することにより、Mysqlエンジンを「だましている」と感じています。たとえば、年収を計算するときは、その中の月収も計算します...しかし、とにかくもう一度クエリします。

絡み合っている複数の日付範囲のSUMSを取得するためのより良い方法はありますか?

4

1 に答える 1

3

CASE実際には、を計算するために使用できますearning

SELECT  SUM(CASE WHEN date BETWEEN $start_month AND $end_month THEN earnings ELSE 0 END),
        SUM(CASE WHEN date BETWEEN $start_last_month AND $end_last_month THEN earnings ELSE 0 END),
        SUM(CASE WHEN date BETWEEN $start_year AND NOW() THEN earnings ELSE 0 END)
FROM    stats
于 2013-03-25T05:42:24.607 に答える