ここで最初の質問!最近 SQLite を使い始めました。プログラミング経験はあまりありません。
sqlite データベースから Excel でレポートを生成するツールに取り組んでいます。
私が現在取り組んでいるレポートは、特定の期間にリリースされた製品の 1 か月あたりの平均収益を見つけることに基づいています。
たとえば、2011 年 9 月のデータは、9 月、8 月、7 月にリリースされたすべての製品について、その月に発生したすべての収益の平均になります。
クエリは次のようになります。
SELECT date,avg(total_revenue) from product_table join revenue_table
WHERE(
(
sales_month=strftime('%m',release_date,'+1 months') AND
sales_year=strftime('%Y',release_date,'+1 months')
)
OR
(
sales_month=strftime('%m',release_date,'+2 months') AND
sales_year=strftime('%Y',release_date,'+2 months')
)
OR
(
sales_month=strftime('%m',release_date,'+3 months') AND
sales_year=strftime('%Y',release_date,'+3 months')
)
OR
(
sales_month=strftime('%m',release_date) AND
sales_year=strftime('%Y',release_date)
)
AND
additional_filters=true
)
group by sales_year, sales_month;
これにより、必要なデータが生成されると思いますが、生成されたとしても、恐ろしく、扱いにくく、拡張できません。
私の最初の質問は、この種のネストされたロジックが sqlite WHERE ステートメント内で機能するかどうかです。つまり、次のようなクエリを作成できますか?
where ((a=b AND c=d) OR (a=d AND b=c))
OR の 1 つを where に変更して実験しましたが、結果がわかりません。
私のもう 1 つの質問は、理想的にはユーザーが時間枠を制御できる (つまり、3 か月から 1 か月に変更する) ため、これを行うためのより洗練された方法があるかどうかです。
請求書は毎月照合されますが、製品は月を通してリリースされることに注意してください。sales_month,sales_year から日付文字列を作成し、次のようなクエリを作成しようとしました:
where (julianday(sales_date)-julianday(release_date) BETWEEN 0 AND 90 AND addtional_filters)
しかし、これはうまくいかないようです。