私は夢中になっている質問があります。それは答えが可能である(または明らかである)ように思われるが、私はこの点まで困惑している。SQL-各クエリの結果を別々にフィルタリングする
ここに文脈があります。私は、製品ライセンスの有効期限の最後の90日以内にログインしたユーザーのうち、どのユーザーがもはや顧客ではなくなったことを把握しようとしています。問題は、ライセンスが期限切れになったときにフィルタが適用されることで、顧客ごとに異なります。
SELECT customer_id, email
FROM customers
WHERE last_login > ((SELECT license_end FROM customers)-7776000)
これはlast_loginとlicense_end両方のUNIXタイムスタンプであるので、7776000が90日間秒変換である:私は当初、このようなクエリを記述してみました。すでにわかっているので、このサブクエリは複数の行を返して失敗します。おっとっと。
この場合、各ライセンス終了日は各顧客ごとに異なるため、ライセンスの最後の30日以内にlast_loginタイムスタンプを持つすべてのIDと電子メールを返す方法はありますか?
私はスプレッドシートでそれを行うことができますが、このパズルは私を狂っています。あなたの専門知識のために事前に感謝!
を実行します。私の混乱は、 '((SELECT unix_timestamp(license_end)FROM customers)-7776000)'が、 'SELECT'と' FROM'は完全に不要であることが判明しました。 (その列は実際にはUNIXではなくタイムスタンプです。)これは間違いなく機能しました。ありがとう!! – user7484388
両方のカラムがタイムスタンプの場合は、 'DATE_SUB()'を使用してインターバルを減算します – Barmar