0

ここで最初の質問!最近 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)

しかし、これはうまくいかないようです。

4

1 に答える 1

0

句の式はWHERE任意に複雑にすることができます。

販売/リリースの比較は、次の式で行うことができます。

WHERE date(sales_date, 'start of month')
      BETWEEN date(release_date, 'start of month')
          AND date(release_date, 'start of month', '+2 months')
  AND ...
于 2013-10-04T16:00:57.543 に答える