1> /*  In-class practice exercises, 10/21/2000  (Q. 5, 8-10)        */
2> /*                                                               */
3> use pubs2
1> /*                                                               */
2> /*  Queries on pp. 182                                        */
3> /*                                                               */
4> /* First query:                                                  */
5> /*                                                               */
6> select pub_id, sum(advance), avg(price)
7> from titles
8> where price >= 5
9> group by pub_id
10> having sum(advance) > 15000
11>   and avg(price) < 20
12>   and pub_id > '0800'
13> order by pub_id
 pub_id                                                   
 ------ ------------------------ ------------------------ 
 0877                  26,000.00                    17.89 
 1389                  30,000.00                    18.98 

(2 rows affected)
1> /*                                                               */
2> /* Second query, as shown in the text book:                      */
3> /*                                                               */
4> select pub_id, sum(advance), avg(price)
5> from titles
6> group by pub_id
7> having sum(advance) > 15000
8>   and avg(price) < 20
9>   and pub_id > '0800'
10>   and price >= 5
11> order by pub_id
 pub_id                                                   
 ------ ------------------------ ------------------------ 
 0877                  41,000.00                    15.41 
 0877                  41,000.00                    15.41 
 0877                  41,000.00                    15.41 
 0877                  41,000.00                    15.41 
 0877                  41,000.00                    15.41 
 1389                  30,000.00                    18.98 
 1389                  30,000.00                    18.98 
 1389                  30,000.00                    18.98 
 1389                  30,000.00                    18.98 
 1389                  30,000.00                    18.98 

(10 rows affected)
1> /*                                                               */
2> /* Second query, including price in select list to show why      */
3> /* rows are repeated in previous query:                          */
4> select pub_id, sum(advance), avg(price), price
5> from titles
6> group by pub_id
7> having sum(advance) > 15000
8>   and avg(price) < 20
9>   and pub_id > '0800'
10>   and price >= 5
11> order by pub_id
 pub_id                                                  
         price                    
 ------ ------------------------ ------------------------ 
        ------------------------ 
 0877                  41,000.00                    15.41
                            11.95 
 0877                  41,000.00                    15.41
                            14.99 
 0877                  41,000.00                    15.41
                            19.99 
 0877                  41,000.00                    15.41
                            20.95 
 0877                  41,000.00                    15.41
                            21.59 
 1389                  30,000.00                    18.98
                            11.95 
 1389                  30,000.00                    18.98
                            19.99 
 1389                  30,000.00                    18.98
                            19.99 
 1389                  30,000.00                    18.98
                            20.00 
 1389                  30,000.00                    18.98
                            22.95 

(10 rows affected)
1> /*                                                           */
1> /*  Eliminate repeated rows					*/
1> /*								*/
2> select distinct pub_id, sum(advance), avg(price)
3> from titles
4> group by pub_id
5> having sum(advance) > 15000
6>   and avg(price) < 20
7>   and pub_id > '0800'
8>    and price >= 5
9>  order by pub_id
 pub_id                                                   
 ------ ------------------------ ------------------------ 
 0877                  41,000.00                    15.41 
 1389                  30,000.00                    18.98 

(2 rows affected)

1> /*								*/
2> /*  Make au_ids "anonymous" by replacing part of ID.		*/
3> /*								*/
4> select au_id, stuff(au_id, 8, 4, 'xxxx') as anon_ID
5> from authors
 au_id       anon_ID     
 ----------- ----------- 
 172-32-1176 172-32-xxxx 
 213-46-8915 213-46-xxxx 
 238-95-7766 238-95-xxxx 
 267-41-2394 267-41-xxxx 
 274-80-9391 274-80-xxxx 
 341-22-1782 341-22-xxxx 
 409-56-7008 409-56-xxxx 
 427-17-2319 427-17-xxxx 
 472-27-2349 472-27-xxxx 
 486-29-1786 486-29-xxxx 
 527-72-3246 527-72-xxxx 
 648-92-1872 648-92-xxxx 
 672-71-3249 672-71-xxxx 
 712-45-1867 712-45-xxxx 
 722-51-5454 722-51-xxxx 
 724-08-9931 724-08-xxxx 
 724-80-9391 724-80-xxxx 
 756-30-7391 756-30-xxxx 
 807-91-6654 807-91-xxxx 
 846-92-7186 846-92-xxxx 
 893-72-1158 893-72-xxxx 
 899-46-2035 899-46-xxxx 
 998-72-3567 998-72-xxxx 

(23 rows affected)
1> /*								*/
2> /*  Write name backwards.					*/
3> /*								*/
4> select reverse('Evelyn Stevens')
                
 -------------- 
 snevetS nylevE 

(1 row affected)
1> /*								*/
2> /*  Minutes only for current time, class start time, 12:01 am.	*/
3> /*								*/
4> select substring(convert(char(8), getdate(), 8), 4, 2)
    
 -- 
 59 

(1 row affected)
1> select right('12:01', 2)
    
 -- 
 01 

(1 row affected)
1> select substring(convert(char(8), convert(smalldatetime, '9 am'), 8), 4, 2)
    
 -- 
 00 

(1 row affected)