an intro to writing sql queries & using the sqlreports customization for powerschool chris a....

Post on 22-Dec-2015

226 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

An Intro to Writing SQL Queries &

Using the sqlReports Customization for PowerSchool

Chris A. McManigalCamden County SchoolsKingsland, GA

GaETC App

Session Evaluation

Vendors• Please make sure to visit the Vendors Room in Kenyan ½

• Vendors will be here all day Tuesday

Overview• Basic database architecture

• SQL Query Tools

• SQL definitions and structure

• SQL functions

• What are sqlReports?

• Downloading/Installing sqlReports

• Creating an sqlReport

• Importing/Exporting sqlReports

• Q & A

Database architecture

Database table

ID Last_name First_name Gender Ethnicity Grade_Level

1 Smith John M W 2

2 Brown Jim M B 3

3 Jones Sue F H 2

4 Smith Betty F A 4

FIELDS (COLUMNS)

RECORDS (ROWS)

PowerSchool Tables/Guides• Data dictionary contains all tables and fields within each table

(Data Dictionary Tables for PowerSchool 7.x)

• Custom fields API guide provides functions to quickly access various tables’ custom fields (PS_CUSTOMFIELDS API Guide for PowerSchool 7.x)

SQL Query Tools• Oracle comes with SQL *Plus• Command-line interface• Cannot edit and resubmit; must retype• Mainly used for scripted queries

• Many GUI/IDE query tools• Show database layout (tables, views, columns, etc.)• Color coding of keywords and formatting for easier readability • Editing for trial-and-error querying• Display results on same page• Saving of SQL queries• Exporting of results in various formats (.xls, .txt, .xml, etc.)• Examples: Oracle SQL Developer, RazorSQL, Advanced Query Tool,

Aqua Data Studio

SQL Developer• Download from oracle.com• Must register• Must have Java Development Kit installed• SQL Developer comes with or without JDK

• Database connection• Need DB server IP address• Need password for one of the PS users (ps, psnavigator,

psdataminer)• No need to create separate ODBC connection

What is SQL??• Structured Query Language

• Standard language structure used to access and manipulate relational databases

• Many different “flavors” depending on type of database; Oracle uses PL/SQL

Parts of the SQL query• SELECT statement

• Declares the fields to be returned by the query• ‘*’ returns all fields

• FROM clause• Defines the table being queried• Can contain JOIN clauses to query multiple tables

• WHERE clause• Provides constraints on the records to be returned

• GROUP BY clause• Eliminates duplication and provides for using aggregate functions

• HAVING clause• Provides constraints on items in a GROUP BY clause, including aggregate functions

• ORDER BY clause• Sorts the records that are returned

Comparison OperatorsOperator Description

= Equality test

<> Inequality test

> Greater than test

< Less than test

>= Greater than or equal to test

<= Less than or equal to test

IN “Equivalent to any member”test

BETWEEN Inclusive range test

LIKE Character pattern-matching test

IS NULL Null (empty) test

Logical OperatorsOperator Description

AND All constraints must be TRUE

OR At least one of the constraints must be TRUE

NOT The constraint must be FALSE

SELECT & FROM

SELECT *FROM students

SELECT schoolid, student_number, grade_level, gender, ethnicity FROM students

SELECT course_number, section_number FROM cc

DISTINCT

• Selects distinct rows from a table

SELECT DISTINCT last_name FROM students

SELECT DISTINCT course_number, course_nameFROM storedgrades

WHERESELECT schoolid, student_number, grade_level, gender, ethnicity FROM studentsWHERE schoolid = 100

SELECT schoolid, student_number, grade_level, gender, ethnicity FROM studentsWHERE schoolid = 100 AND gender = ‘F’

WHERE (cont.)SELECT schoolid, student_number, grade_level, gender, ethnicity FROM studentsWHERE schoolid = 100 AND gender = ‘F’ AND (grade_level = 3 OR

grade_level = 4 OR grade_level = 5)

SELECT schoolid, student_number, grade_level, gender, ethnicity FROM studentsWHERE schoolid = 100 AND gender = ‘F’ AND grade_level IN (3,4,5)

SELECT schoolid, student_number, grade_level, gender, ethnicity FROM studentsWHERE schoolid = 100 AND gender = ‘F’ AND grade_level >= 3

SELECT schoolid, student_number, grade_level, gender, ethnicity FROM studentsWHERE schoolid = 100 AND gender = ‘F’ AND grade_level BETWEEN 3 AND 5

ORDER BYSELECT schoolid, student_number, grade_level, gender, ethnicity FROM studentsWHERE schoolid = 100 AND gender = ‘F’ AND grade_level IN (3,4,5) ORDER BY grade_level

SELECT schoolid, student_number, grade_level, gender, ethnicity FROM studentsWHERE schoolid = 100 AND gender = ‘F’ AND grade_level IN (3,4,5) ORDER BY grade_level,student_number

LIKE & Wildcards• Wildcards• ‘%’ (percent)

• substitute for one or more characters• ‘_’ (underscore)

• Substitute for exactly one character

SELECT course_number, course_nameFROM coursesWHERE course_number LIKE ‘00%’

SELECT course_number, course_nameFROM coursesWHERE course_number LIKE ’_ _1%’ (note: underscores separated by space for clarity only; do NOT separate with space in query)

SQL Aliases• Used for• Specifying the output column names• Abbreviating table names

SELECT s.lastfirst “Student”, s.home_room “Teacher”FROM students s

JOIN• Used to link multiple tables based on the relationship between certain columns

(called “keys”)

• JOIN notation• Explicit

• Uses SQL keywords JOIN and ON

SELECT s.lastfirst,s g.course_name, sg.gradeFROM students s JOIN storedgrades sg ON sg.studentid = s.id

• Implicit• Lists the tables separated by commas and the WHERE clause provides additional constraints

SELECT s.lastfirst, sg.course_name, sg.gradeFROM students s, storedgrades sgWHERE s.id = sg.studentid

JOIN Types• Types• INNER JOIN

• Returns records when there is at least one match between tables• LEFT JOIN

• Returns records from the left table regardless of matches in other table

• RIGHT JOIN• Returns records from the right table regardless of matches in other

table• FULL JOIN

• Combines LEFT and RIGHT JOINs• Returns records for both tables regardless of matches in other table

• Self-Join• Joins a table to itself

INNER JOINSELECT hr.levelvalue, s.lastfirst, s.grade_levelFROM honorroll hrJOIN students s ON s.id = hr.studentidWHERE hr.yearid = 20 AND hr.storecode = ‘Q1’ORDER BY hr.levelvalue, s.lastfirst

SELECT s.schoolid, t.lastfirst, s.lastfirstFROM students s JOIN cc ON cc.studentid = s.id AND cc.termid = 2000 AND cc.course_number LIKE ‘00%’ AND cc.expression LIKE ‘1(%’JOIN teachers t ON cc.teacherid = t.idWHERE s.enroll_status = 0ORDER BY s.schoolid, t.lastfirst, s.lastfirst

LEFT JOINSELECT s.grade_level, s.lastfirst, hr.levelvalueFROM students s LEFT JOIN honorroll hr ON s.id = hr.studentid AND hr.yearid = 20 AND hr.storecode = ‘Q1’ORDER BY s.grade_level, s.lastfirst

SELECT s.grade_level, s.lastfirst, sg.percentFROM students sLEFT JOIN storedgrades sg ON sg.studentid = s.id AND sg.percent < 70 AND sg.storecode = ‘Q1’ AND sg.termid = 2000 AND sg.course_number LIKE ‘271%’WHERE s.enroll_status = 0 AND s.schoolid = 100ORDER BY s.grade_level, s.lastfirst

SQL Built-in Functions• Allow manipulation of returned fields

• Examples• To_char()

• To_char(entrydate,’YYYYMMDD’)

• Upper()/Lower()• Upper(last_name)

• Decode()• Decode(grade_level,-1,PK,0,K,grade_level)

• Many more• Oracle/PLSQL: Built-in Functions

What are sqlReports?• Free customization for PowerSchool created by Dean Dahlvang

(PS user in Minnesota)

• Creates a new tab on the Reports page

• Harnesses SQL to search multiple tables and create user-runnable reports

• Allows importing and exporting for sharing among systems

How do I get sqlReports?• Download Custom Reports Bundle from

powerdatasolutions.org

• Installation:• Copy the bundle into the custom web_root, or• Upload via CPM

• Ensure customization is turned on• System System Settings Customization

Creating an sqlReport• Start Page System Reports Custom SQL Reports

Creating an sqlReport (cont.)• Click the “Create a new sqlReport” link

Report Information

Report Information (cont.)

Query Section

SQL Queryselect

s.lastfirst, decode(s.schoolid,100,'MLGES',105,'SMMS',110,'SMES',

182,'CMS',187,'CRES',189,'MHES',192,'WES',193,'KES',195,'DLRES',197,'SES',295,'CCHS',495,'MLCES'), decode(s.enroll_status,-1,'Pre-Registered',0,'Active',2,'Transferred Out',3,'Graduated',4,'Imported as Historical')

from students s

where s.last_name like 'Smith%'

Query Section (cont.)• Paste SQL query and click Build Header• Replace “Column X” with header names

Student Selection

Student Selection (cont.)• Check box and click Build Query• Insert DCID alias (if necessary) and remove Order By clause

Parameters

Parameters (cont.)• Replace comparison value with %paramX”, where X is the

parameter number

Parameters (cont.)• Enter display name and default value

Examples

Export a template• Right click export link to save report template as a text file

Template Contents

Import Template

Import Template (cont.)

Template Contents• Remove &nbsp;

Examples

Q & A

top related