こんにちは。SQL初心者です。指定された期間内に初めて投稿したユーザー名のリストを取得したいと考えています。
これは「参加」ではなく「投稿」が初めてである点が重要です。私たちのユースケースは一般的なものとは異なるため、投稿が重要になります。
そのようなクエリをお持ちの方はいらっしゃいますか?ご協力をいただければ幸いです!
ありがとうございます!
こんにちは。SQL初心者です。指定された期間内に初めて投稿したユーザー名のリストを取得したいと考えています。
これは「参加」ではなく「投稿」が初めてである点が重要です。私たちのユースケースは一般的なものとは異なるため、投稿が重要になります。
そのようなクエリをお持ちの方はいらっしゃいますか?ご協力をいただければ幸いです!
ありがとうございます!
これで問題解決するはずです、@ThunderThighs。Data Explorer に追加し、開始日と終了日を入力すれば、すぐに始められます。日付はサポートされている形式のいずれかである必要があります。その一例は YYYY-MM-DD です。
-- [params]
-- date :start_date
-- date :end_date
SELECT username
FROM users u
JOIN user_stats us
ON u.id = us.user_id
WHERE us.first_post_created_at BETWEEN :start_date::date AND :end_date::date
これは非常に役立ちます。では、これらの投稿を実際に取得するにはどうすればよいでしょうか?
このようなもので要件を満たすでしょうか?
-- [params]
-- date :start_date
-- date :end_date
SELECT u.id AS user_id, p.id AS post_id, p.created_at
FROM users u
JOIN user_stats us
ON u.id = us.user_id
JOIN posts p
ON u.id = p.user_id
WHERE p.created_at = us.first_post_created_at
AND us.first_post_created_at BETWEEN :start_date::date AND :end_date::date
完璧です。ありがとうございます。
少し SQL の初心者向けの質問をしてもよろしいでしょうか?2 行目と 3 行目の u と us はどのような役割を果たしているのでしょうか?AS のような機能で、users を接頭辞 u、user_stats を接頭辞 us として参照できるようになっているのでしょうか?
問題ありません!
その通りです。u と us はテーブルエイリアスです。詳しくはこちらをご覧ください: http://www.postgresqltutorial.com/postgresql-alias/
これは本質的に省略記法です。user_stats テーブルの user_id 列を指す際に、user_stats.user_id の代わりに us.user_id と書けるようにします。特にテーブル名が長い場合や、クエリが複雑な場合に役立ちます。