true

Creacion de tablas e ingreso de datos en SAP Hana studio en ambiente QB1 dentro de mi usuario A843931

Insertando evidencia tabla Facilities

Insertando evidencia tabla Facilities

Insertando evidencia tabla Members

Insertando evidencia tabla Members

Insertando evidencia tabla Booking

Insertando evidencia tabla Booking

library(TSstudio)
## Warning: package 'TSstudio' was built under R version 4.2.3
library(RODBC)
library(DBI)

library(DBI)
con <- dbConnect(odbc::odbc(), "HANA_QB1", timeout = 10)

Q1 <- dbGetQuery(con, "select * from A843931.FACILITIES")

Q2 <- dbGetQuery(con, "select name, membercost from A843931.FACILITIES")

Q3 <- dbGetQuery(con, "select * from A843931.FACILITIES
                          where membercost > 0")

Q4 <- dbGetQuery(con, "select facid, name, membercost, monthlymaintenance
                        from A843931.FACILITIES
                          where membercost > 0 and 
                            (membercost < monthlymaintenance/50.0)")

Q5 <- dbGetQuery(con, "select * from A843931.FACILITIES
                         where 
                         name like '%Tennis%'")

Q6 <- dbGetQuery(con, "select * from A843931.FACILITIES
                        where 
                            facid in (1,5)")
Q7 <- dbGetQuery(con, "select name, 
                            case when (monthlymaintenance > 100) then
                                'expensive'
                            else
                                'cheap'
                            end as cost from A843931.FACILITIES")

Q8 <- dbGetQuery(con, "select memid, surname, firstname, joindate  from A843931.MEMBERS 
                        where joindate >= '2012-09-01'")

Q9 <- dbGetQuery(con, "select distinct surname from A843931.MEMBERS 
                          order by surname
                          limit 10")

Q10 <- dbGetQuery(con, "select surname 
                            from A843931.MEMBERS
                        union
                        select name
                            from A843931.FACILITIES")

Q11 <- dbGetQuery(con, "select max(joindate) as latest from A843931.MEMBERS")

Q12 <- dbGetQuery(con, "select firstname, surname, joindate
                        from A843931.MEMBERS
                        where joindate = 
                            (select max(joindate) 
                                from A843931.MEMBERS)")

Resultados de querys basic

Cada Q# es un ejercicio del programa

##   FACID            NAME MEMBERCOST GUESTCOST INITIALOUTLAY MONTHLYMAINTENANCE
## 1     2 Badminton Court        0.0      15.5         10000                 50
## 2     3    Table Tennis        0.0       5.0         10000                 10
## 3     4  Massage Room 1       35.0      80.0         10000               3000
## 4     5  Massage Room 2       35.0      80.0         10000               3000
## 5     6    Squash Court        3.5      17.5         10000                 80
## 6     7   Snooker Table        0.0       5.0         10000                 15
##              NAME MEMBERCOST
## 1 Badminton Court        0.0
## 2    Table Tennis        0.0
## 3  Massage Room 1       35.0
## 4  Massage Room 2       35.0
## 5    Squash Court        3.5
## 6   Snooker Table        0.0
##   FACID           NAME MEMBERCOST GUESTCOST INITIALOUTLAY MONTHLYMAINTENANCE
## 1     4 Massage Room 1       35.0      80.0         10000               3000
## 2     5 Massage Room 2       35.0      80.0         10000               3000
## 3     6   Squash Court        3.5      17.5         10000                 80
## 4     9            Spa       20.0      30.0         10000                800
## 5    10 Squash Court 2        3.5      17.5         10000                 80
## 6    11            Spa       20.0      30.0         10000                800
##   FACID           NAME MEMBERCOST MONTHLYMAINTENANCE
## 1     4 Massage Room 1         35               3000
## 2     5 Massage Room 2         35               3000
##   FACID           NAME MEMBERCOST GUESTCOST INITIALOUTLAY MONTHLYMAINTENANCE
## 1     3   Table Tennis        0.0         5         10000                 10
## 2     0 Tennis Court 1        6.0        30         10000                200
## 3     1 Tennis Court 2        6.6        33         10000                200
##   FACID           NAME MEMBERCOST GUESTCOST INITIALOUTLAY MONTHLYMAINTENANCE
## 1     5 Massage Room 2       35.0        80         10000               3000
## 2     1 Tennis Court 2        6.6        33         10000                200
##              NAME      COST
## 1 Badminton Court     cheap
## 2    Table Tennis     cheap
## 3  Massage Room 1 expensive
## 4  Massage Room 2 expensive
## 5    Squash Court     cheap
## 6   Snooker Table     cheap
##   MEMID           SURNAME FIRSTNAME            JOINDATE
## 1    24            Sarwin Ramnaresh 2012-09-01 08:44:42
## 2    26             Jones   Douglas 2012-09-02 18:43:05
## 3    27            Rumney Henrietta 2012-09-05 08:42:35
## 4    28           Farrell     David 2012-09-15 08:22:05
## 5    29 Worthington-Smyth     Henry 2012-09-17 12:27:15
## 6    30           Purview Millicent 2012-09-18 19:04:01
##   SURNAME
## 1   Bader
## 2   Baker
## 3  Boothe
## 4 Butters
## 5  Coplin
## 6 Crumpet
##             SURNAME
## 1 Worthington-Smyth
## 2           Genting
## 3             Tracy
## 4            Sarwin
## 5             GUEST
## 6    Massage Room 1
##                LATEST
## 1 2012-09-22 08:36:38
##   FIRSTNAME SURNAME            JOINDATE
## 1     Erica Crumpet 2012-09-22 08:36:38

ejercicios de Joins and Subqueries

Q13 <- dbGetQuery(con, "SELECT bks.starttime 
                    FROM 
                        A843931.BOOKINGS as bks
                        INNER JOIN A843931.MEMBERS as mems ON mems.memid = bks.memid
                    WHERE 
                        mems.firstname = 'David' 
                        AND mems.surname = 'Farrell'")

Q14 <- dbGetQuery(con, "SELECT bks.starttime AS start_time, facs.name AS name
                          FROM 
                              A843931.FACILITIES as facs
                              INNER JOIN A843931.BOOKINGS as bks ON facs.facid = bks.facid
                          WHERE 
                              facs.name IN ('Tennis Court 2','Tennis Court 1') 
                              AND bks.starttime >= '2012-09-21' 
                              AND bks.starttime < '2012-09-22'
                          ORDER BY 
                              bks.starttime")

Q15 <- dbGetQuery(con, "SELECT DISTINCT recs.firstname AS firstname, 
                          recs.surname AS surname
                      FROM 
                          A843931.MEMBERS mems
                          INNER JOIN A843931.MEMBERS recs ON recs.memid = mems.recommendedby
                      ORDER BY 
                          surname, 
                          firstname")

Q16 <- dbGetQuery(con, "SELECT mems.firstname AS memfname, mems.surname AS memsname, 
                            recs.firstname AS recfname, 
                            recs.surname AS recsname
                        FROM 
                            A843931.MEMBERS mems
                            LEFT OUTER JOIN A843931.MEMBERS recs ON recs.memid = mems.recommendedby
                        ORDER BY 
                            memsname, 
                            memfname")

Q17 <- dbGetQuery(con, "SELECT DISTINCT 
                            mems.firstname || ' ' || mems.surname AS member, 
                            facs.name AS facility
                        FROM 
                            A843931.MEMBERS mems
                            INNER JOIN A843931.BOOKINGS bks ON mems.memid = bks.memid
                            INNER JOIN A843931.FACILITIES facs ON bks.facid = facs.facid
                        WHERE
                            facs.name IN ('Tennis Court 2','Tennis Court 1')
                        ORDER BY 
                            member, 
                            facility")

Q18 <- dbGetQuery(con, "SELECT 
                              mems.firstname || ' ' || mems.surname AS member, 
                              facs.name AS facility, 
                              CASE 
                                  WHEN mems.memid = 0 THEN bks.slots * facs.guestcost
                                  ELSE bks.slots * facs.membercost
                              END AS cost
                          FROM 
                              A843931.MEMBERS mems                
                              INNER JOIN A843931.BOOKINGS bks ON mems.memid = bks.memid
                              INNER JOIN A843931.FACILITIES facs ON bks.facid = facs.facid
                          WHERE
                              bks.starttime >= '2012-09-14' AND 
                              bks.starttime < '2012-09-15' AND (
                                  (mems.memid = 0 AND bks.slots * facs.guestcost > 30) OR
                                  (mems.memid != 0 AND bks.slots * facs.membercost > 30)
                              )
                          ORDER BY 
                              cost DESC")
Q19 <- dbGetQuery(con, "SELECT DISTINCT mems.firstname || ' ' || mems.surname as member,
                            (SELECT recs.firstname || ' ' || recs.surname as recommender 
                             FROM A843931.MEMBERS recs 
                             WHERE recs.memid = mems.recommendedby
                            )
                        FROM 
                            A843931.MEMBERS mems
                        ORDER BY 
                            member")

Q20 <- dbGetQuery(con,"SELECT mems.firstname || ' ' || mems.surname as member,
                            facs.name as facility,
                            CASE
                                WHEN mems.memid = 0 THEN bks.slots * facs.guestcost
                                ELSE bks.slots * facs.membercost
                            END as cost
                        FROM
                            A843931.MEMBERS mems
                            INNER JOIN A843931.BOOKINGS bks ON mems.memid = bks.memid
                            INNER JOIN A843931.FACILITIES facs ON bks.facid = facs.facid
                        WHERE
                            bks.starttime >= '2012-09-14' AND
                            bks.starttime < '2012-09-15' AND
                            (CASE
                                WHEN mems.memid = 0 THEN bks.slots * facs.guestcost
                                ELSE bks.slots * facs.membercost
                            END) > 30
                        ORDER BY
                            cost DESC")
head(Q13)
##             STARTTIME
## 1 2012-09-18 09:00:00
## 2 2012-09-18 17:30:00
## 3 2012-09-18 13:30:00
## 4 2012-09-18 20:00:00
## 5 2012-09-19 09:30:00
## 6 2012-09-19 15:00:00
head(Q14)
##            START_TIME           NAME
## 1 2012-09-21 08:00:00 Tennis Court 2
## 2 2012-09-21 08:00:00 Tennis Court 1
## 3 2012-09-21 09:30:00 Tennis Court 1
## 4 2012-09-21 10:00:00 Tennis Court 2
## 5 2012-09-21 11:30:00 Tennis Court 2
## 6 2012-09-21 12:00:00 Tennis Court 1
head(Q15)
##   FIRSTNAME SURNAME
## 1  Florence   Bader
## 2   Timothy   Baker
## 3    Gerald Butters
## 4    Jemima Farrell
## 5   Matthew Genting
## 6     David   Jones
head(Q16)
##   MEMFNAME MEMSNAME RECFNAME RECSNAME
## 1 Florence    Bader   Ponder Stibbons
## 2     Anne    Baker   Ponder Stibbons
## 3  Timothy    Baker   Jemima  Farrell
## 4      Tim   Boothe      Tim   Rownam
## 5   Gerald  Butters   Darren    Smith
## 6     Joan   Coplin  Timothy    Baker
head(Q17)
##         MEMBER       FACILITY
## 1   Anne Baker Tennis Court 1
## 2   Anne Baker Tennis Court 2
## 3 Burton Tracy Tennis Court 1
## 4 Burton Tracy Tennis Court 2
## 5 Charles Owen Tennis Court 1
## 6 Charles Owen Tennis Court 2
head(Q18)
##           MEMBER       FACILITY COST
## 1    GUEST GUEST Massage Room 2  320
## 2    GUEST GUEST Tennis Court 2  198
## 3    GUEST GUEST Massage Room 1  160
## 4    GUEST GUEST Massage Room 1  160
## 5    GUEST GUEST Massage Room 1  160
## 6 Jemima Farrell Massage Room 1  140
head(Q19)
##           MEMBER
## 1 Anna Mackenzie
## 2     Anne Baker
## 3   Burton Tracy
## 4   Charles Owen
## 5   Darren Smith
## 6  David Farrell
##   (SELECTRECS.FIRSTNAME||''||RECS.SURNAMEASRECOMMENDERFROMA843931.MEMBERSRECSWHERERECS.MEMID=MEMS.RECOMMENDEDBY)
## 1                                                                                                   Darren Smith
## 2                                                                                                Ponder Stibbons
## 3                                                                                                           <NA>
## 4                                                                                                   Darren Smith
## 5                                                                                                           <NA>
## 6                                                                                                           <NA>
head(Q20)
##           MEMBER       FACILITY COST
## 1    GUEST GUEST Massage Room 2  320
## 2    GUEST GUEST Tennis Court 2  198
## 3    GUEST GUEST Massage Room 1  160
## 4    GUEST GUEST Massage Room 1  160
## 5    GUEST GUEST Massage Room 1  160
## 6 Jemima Farrell Massage Room 1  140

#Modifying data

Q21 <- dbGetQuery(con, "INSERT INTO A843931.FACILITIES 
                      (FACID, NAME, MEMBERCOST, GUESTCOST, INITIALOUTLAY, MONTHLYMAINTENANCE)
                      SELECT 9, 'Spa', 20, 30, 100000, 800 FROM DUMMY
                      WHERE NOT EXISTS (SELECT 1 FROM A843931.FACILITIES WHERE FACID = 9)")

Q22 <- dbGetQuery(con, "INSERT INTO A843931.FACILITIES 
                        (FACID, NAME, MEMBERCOST, GUESTCOST, INITIALOUTLAY, MONTHLYMAINTENANCE)
                      SELECT 9, 'Spa', 20, 30, 100000, 800 FROM DUMMY
                      WHERE NOT EXISTS (SELECT 1 FROM A843931.FACILITIES WHERE FACID = 9)
                      UNION ALL
                      SELECT 10, 'Squash Court 2', 3.5, 17.5, 5000, 80 FROM DUMMY
                      WHERE NOT EXISTS (SELECT 1 FROM A843931.FACILITIES WHERE FACID = 10)")

Q23 <- dbGetQuery(con, "INSERT INTO A843931.FACILITIES
              (FACID, NAME, MEMBERCOST, GUESTCOST, INITIALOUTLAY, MONTHLYMAINTENANCE)
          SELECT (SELECT MAX(facid) FROM A843931.FACILITIES) + 1, 'Spa', 20, 30, 100000, 800 FROM DUMMY")

Q24 <- dbGetQuery(con, "UPDATE A843931.FACILITIES
                        SET initialoutlay = 10000;")

Q25 <- dbGetQuery(con, "UPDATE A843931.FACILITIES
                        SET
                            membercost = 6,
                            guestcost = 30
                        WHERE facid IN (0, 1)")

Q26 <- dbGetQuery(con, "UPDATE A843931.FACILITIES
                          SET
                              MEMBERCOST = 
                              (SELECT MEMBERCOST * 1.1 FROM A843931.FACILITIES WHERE FACID = 0),
                              GUESTCOST = 
                              (SELECT GUESTCOST * 1.1 FROM A843931.FACILITIES WHERE FACID = 0)
                          WHERE
                              FACID = 1")

Q27 <- dbGetQuery(con, "DELETE FROM A843931.MEMBERS WHERE memid = 37;")

Q28 <- dbGetQuery(con, "DELETE FROM A843931.MEMBERS WHERE NOT EXISTS 
                (SELECT 1 FROM A843931.BOOKINGS WHERE A843931.MEMBERS.memid 
                = A843931.BOOKINGS.memid);")
head(Q21)
## data frame with 0 columns and 0 rows
head(Q22)
## data frame with 0 columns and 0 rows
head(Q23)
## data frame with 0 columns and 0 rows
head(Q24)
## data frame with 0 columns and 0 rows
head(Q25)
## data frame with 0 columns and 0 rows
head(Q26)
## data frame with 0 columns and 0 rows
head(Q27)
## data frame with 0 columns and 0 rows
head(Q28)
## data frame with 0 columns and 0 rows

#String Operations

Q29 <- dbGetQuery(con, "SELECT SURNAME || ', ' || FIRSTNAME AS NAME FROM A843931.MEMBERS")

Q30 <- dbGetQuery(con, "SELECT * FROM A843931.FACILITIES WHERE NAME LIKE 'Tennis%'")

Q31 <- dbGetQuery(con, "SELECT * FROM A843931.FACILITIES WHERE UPPER(NAME) LIKE 'TENNIS%'")

Q32 <- dbGetQuery(con, "SELECT MEMID, TELEPHONE 
                        FROM A843931.MEMBERS 
                        WHERE TELEPHONE LIKE '%(%' OR TELEPHONE LIKE '%)%'")

Q33 <- dbGetQuery(con, "SELECT LPAD(CAST(ZIPCODE AS CHAR(5)), 5, '0') AS ZIP 
                        FROM A843931.MEMBERS ORDER BY ZIP")

Q34 <- dbGetQuery(con, "SELECT SUBSTR(MEMS.SURNAME, 1, 1) AS LETTER, COUNT(*) AS COUNT 
                        FROM A843931.MEMBERS MEMS
                        GROUP BY MEMS.SURNAME
                        ORDER BY MEMS.SURNAME")

Q35 <- dbGetQuery(con, "SELECT MEMID, 
                    REPLACE(REPLACE(REPLACE(TELEPHONE, '-', ''), '(', ''), ')', '') AS TELEPHONE
                    FROM A843931.MEMBERS
                    ORDER BY MEMID")

Resultados de los Querys

head(Q29)
##               NAME
## 1     GUEST, GUEST
## 2    Smith, Darren
## 3     Smith, Tracy
## 4      Rownam, Tim
## 5 Joplette, Janice
## 6  Butters, Gerald
head(Q30)
##   FACID           NAME MEMBERCOST GUESTCOST INITIALOUTLAY MONTHLYMAINTENANCE
## 1     0 Tennis Court 1        6.0        30         10000                200
## 2     1 Tennis Court 2        6.6        33         10000                200
head(Q31)
##   FACID           NAME MEMBERCOST GUESTCOST INITIALOUTLAY MONTHLYMAINTENANCE
## 1     0 Tennis Court 1        6.0        30         10000                200
## 2     1 Tennis Court 2        6.6        33         10000                200
head(Q32)
##   MEMID      TELEPHONE
## 1     0 (000) 000-0000
## 2     3 (844) 693-0723
## 3     4 (833) 942-4710
## 4     5 (844) 078-4130
## 5     6 (822) 354-9973
## 6     7 (833) 776-4001
head(Q33)
##     ZIP
## 1 00000
## 2 00234
## 3 00234
## 4 04321
## 5 04321
## 6 10383
head(Q34)
##   LETTER COUNT
## 1      B     1
## 2      B     2
## 3      B     1
## 4      B     1
## 5      C     1
## 6      C     1
head(Q35)
##   MEMID   TELEPHONE
## 1     0 000 0000000
## 2     1  5555555555
## 3     2  5555555555
## 4     3 844 6930723
## 5     4 833 9424710
## 6     5 844 0784130