SQL | Calculations exercise | With no help offered, list events with interesting letters!

This exercise is provided to allow potential course delegates to choose the correct Wise Owl Microsoft training course, and may not be reproduced in whole or in part in any format without the prior written consent of Wise Owl.

The answer to the exercise will be included and explained if you attend one of more of the courses listed below!

Software ==> SQL  (198 exercises)
Version ==> Any version of SQL Server
Topic ==> Calculations  (7 exercises)
Level ==> Harder than average
Courses ==> Introduction to SQL  /  Fast-track SQL
Before you can do this exercise, you'll need to download and unzip this file (if you have any problems doing this, click here for help). Once you've done this:
  1. Go into SQL Server Management Studio;
  2. Open the SQL file you've just unzipped (you can press CTRL + O to do this); then
  3. Execute this script.

This will generate the database that you'll need to use in order to do this exercise (note that the database and script are only to be used for exercises published on this website, and may not be reused or distributed in any form without the prior written permission of Wise Owl).

You need a minimum screen resolution of about 700 pixels width to see our exercises. This is because they contain diagrams and tables which would not be viewable easily on a mobile phone or small laptop. Please use a larger tablet, notebook or desktop computer, or change your screen resolution settings.

If you've reached this point, you're probably ready for a challenge.  See if you can write a query to list out all of the non-boring events:

Non-boring events

The first few of the 28 events you should see.

As the above query shows, a boring event is one which doesn't begin and end with the same letter, and which doesn't begin and end with a vowel!

If you get this working, you could always show that there aren't any ultra-interesting events (ones which begin and end in a vowel).

Save this query as Boring events, then close it down.

This page has 2 threads Add post
12 Mar 19 at 15:13

SELECT * FROM (
SELECT EventName
        , CASE
            WHEN LOWER(LEFT(EventName,1)) IN ('a','e','i','o','u') AND LOWER(RIGHT(EventName,1)) IN ('a','e','i','o','u')
                THEN 'Begins and ends with vowle'
            WHEN LOWER(LEFT(EventName,1)) = LOWER(RIGHT(EventName,1))
                THEN 'Same letter'
          END AS Verdict
FROM tblEvent ) AS T
WHERE Verdict IS NOT NULL
 

19 Feb 19 at 01:01

NOTE: The QUESTION IS ORDERD BY EVENTDATE, if anyone was wondering the order.

If anyone could verify if this is correct, because it seem uncomfortably long:

SELECT
EventName,
CASE
    WHEN LEFT(EventName, 1) = RIGHT(EventName, 1) 
        THEN 'Same letter'
    WHEN (LEFT(EventName, 1) = 'a'  OR LEFT(EventName, 1) = 'e' OR LEFT(EventName, 1) = 'i' OR LEFT(EventName, 1) = 'o' OR LEFT(EventName, 1) = 'u') AND (RIGHT(EventName, 1) = 'a' OR RIGHT(EventName, 1) = 'e' OR RIGHT(EventName, 1) = 'i' OR RIGHT(EventName, 1) = 'o' OR RIGHT(EventName, 1) = 'u') 
        THEN 'Begins and ends with vowel' 
        
    END as 'Verdict' 


FROM
tblEvent
WHERE (CASE
    WHEN LEFT(EventName, 1) = RIGHT(EventName, 1) 
        THEN 'Same letter'
    WHEN (LEFT(EventName, 1) = 'a'  OR LEFT(EventName, 1) = 'e' OR LEFT(EventName, 1) = 'i' OR LEFT(EventName, 1) = 'o' OR LEFT(EventName, 1) = 'u') AND (RIGHT(EventName, 1) = 'a' OR RIGHT(EventName, 1) = 'e' OR RIGHT(EventName, 1) = 'i' OR RIGHT(EventName, 1) = 'o' OR RIGHT(EventName, 1) = 'u') 
        THEN 'Begins and ends with vowel' 
        
    END ) IS NOT NULL

ORDER BY
EventDate

06 Mar 19 at 20:08

Two ways to minimize the code. Firstly use an IN statement to have it group the sections without all those OR statements. To remove the lengthy WHERE clause, simply wrap up the SELECT in parens and name the result, then select all values from the result and do a WHERE on there, as seen here:

USE WorldEvents

SELECT t.* FROM (SELECT EventName,
        CASE WHEN LEFT(EventName, 1) = RIGHT(EventName, 1)
            THEN 'Same Letter'
            WHEN LEFT(EventName, 1) IN ('a', 'e', 'i', 'o', 'u') AND RIGHT(EventName, 1) IN ('a', 'e', 'i', 'o', 'u')
            THEN 'First letter vowel'
        END AS 'Result'
        FROM tblEvent) t
    WHERE t.Result IS NOT NULL