It was suggested on Meta for July 2015 Community Challenge to make a bot that can find questions with bad titles. I wrote this query to help others find examples to help them make write their code.
I made it a point to document as I wrote it so that someone who is a beginner with SQL could still make changes to it easily. Is there room for improvements?
DECLARE @Question INT = (SELECT Id FROM PostTypes WHERE Name = 'Question'); DECLARE @Answer INT = (SELECT Id FROM PostTypes WHERE Name = 'Answer'); SELECT /* Uncomment below if you want to limit the results */ /* TOP 100 */ Posts.Id AS [Post Link] /* only for sanity check in case the filter is removed from WHERE clause */ , CASE WHEN Posts.PostTypeId = @Question THEN 'Question' WHEN Posts.PostTypeId = @Answer THEN 'Answer' ELSE 'Other' END AS [Post Type] , Posts.Score , Posts.CreationDate , Users.Id AS [User Link] , Users.Reputation FROM Posts INNER JOIN Users ON Posts.OwnerUserId = Users.Id WHERE /* Filter out non-question posts */ Posts.PostTypeId = @Question /* Generic title */ AND ( Posts.Title LIKE '%please%' OR Posts.Title LIKE '%review%' OR Posts.Title LIKE '%improve%' OR Posts.Title LIKE '%better%' OR Posts.Title LIKE '%how to%'OR Posts.Title LIKE '%how can i%' OR Posts.Title LIKE '%how do i%' ) /* Post not closed yet */ AND Posts.ClosedDate IS NULL /* Question doesn't have positive score */ /* AND Posts.Score <= 0 */ /* User has low reputation */ AND Users.Reputation <= 500 ORDER BY /* Lowest scores first - Change to DESC if you want Highest first */ Posts.Score ASC /* Newest first - Change to ASC if you want oldest first */ , Posts.CreationDate DESC