an intro to writing sql queries & using the sqlreports customization for powerschool chris a....
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
Examples
Q & A