PIVOT allows you to "flip a table on its side", i.e. Columns to Rows / Rows to Columns. Previously we did this with DECODE or CASE. As of Oracle 11g, Oracle Database includes the PIVOT clause (and UNPIVOT). Oracle expert Geoff Wiland from SkillBuilders will demonstrate PIVOT, UNPIVOT, including the use of aggregate functions.
Views: 10362 SkillBuilders
In this lecture you will learn about PIVOT operator and using it to generate dynamic columns.PIVOT is very use full operator to convert values into columns. PIVOT: •Convert your output from (values)vertical order to horizontal(making columns) one Topic to cover: •PIVOT example •PIVOT syntax •Interview Question •PIVOT on northwind •Dynamic PIVOT query http://www.techsapphire.in/index/pivot_sql_lesson_with_generating_dynamic_columns_with_pivot/0-158
Views: 28827 techsapphire
This video tutorial talks about the frequently asked oracle sql interview question of changing rows to the column. Based on the given scenario, we are asked to change the presentation of data in a table with 3 rows and 2 column to 3 columns and 2 rows. Decode Function in oracle https://youtu.be/YUAjPMjqMws Pivot and unpivot in oracle https://youtu.be/6s0DI1YcWIM
Views: 14322 Kishan Mashru
This video gives an example of nested aggregate functions. A subquery with aggregate functions is placed in the WHERE clause of the outer query, which also contains aggregate functions. (5 of 6) There is also an "SQL Fundamentals" series. (Search for "databasemec" for tutorials using SQL Server.)
Views: 9141 Jennifer Kreie
This is a video tutorial on using pivot and unpivot operators to change rows to column and columns to rows when needed, the video also demonstrates a way to change from rows to column without using the pivot operator which can be helpful if you are using and older version of oracle or some other database without the feature of pivot and unpivot. Both the operators are explained with an example for better understanding
Views: 7151 Kishan Mashru
تعلم اوراكل حتى الاحتراف EXAM 1Z0-061 EXAM 1Z0-071
Views: 1086 khaled alkhudari
This video demonstrates one of the ways to query hierarchical data from Oracle. For more information see: https://oracle-base.com/articles/11g/recursive-subquery-factoring-11gr2 Website: https://oracle-base.com Blog: https://oracle-base.com/blog Twitter: https://twitter.com/oraclebase Cameo by Jeff Smith Blog: http://www.thatjeffsmith.com Twitter: https://twitter.com/thatjeffsmith Cameo appearances are for fun, not an endorsement of the content of this video.
Views: 10644 ORACLE-BASE.com
Link for all dot net and sql server video tutorial playlists http://www.youtube.com/user/kudvenkat/playlists Link for slides, code samples and text version of the video http://csharp-video-tutorials.blogspot.com/2014/06/part-6-transform-rows-into-columns-in.html This is another common sql server interview question. We will be using Countries table in this example. SQL to create the table Create Table Countries ( Country nvarchar(50), City nvarchar(50) ) GO Insert into Countries values ('USA','New York') Insert into Countries values ('USA','Houston') Insert into Countries values ('USA','Dallas') Insert into Countries values ('India','Hyderabad') Insert into Countries values ('India','Bangalore') Insert into Countries values ('India','New Delhi') Insert into Countries values ('UK','London') Insert into Countries values ('UK','Birmingham') Insert into Countries values ('UK','Manchester') Here is the interview question. Write a sql query to transpose rows to columns. Using PIVOT operator we can very easily transform rows to columns. Select Country, City1, City2, City3 From ( Select Country, City, 'City'+ cast(row_number() over(partition by Country order by Country) as varchar(10)) ColumnSequence from Countries ) Temp pivot ( max(City) for ColumnSequence in (City1, City2, City3) ) Piv
Views: 188877 kudvenkat
The fourth part of a mini-series of videos showing how you can improve the performance of function calls from SQL. In this episode, we compare Scalar Subquery Caching with the the Cross-Session PL/SQL Function Result Cache to see which we should use for best performance. For more information see: https://oracle-base.com/articles/misc/efficient-function-calls-from-sql#scalar-subquery-caching-revisited Website: https://oracle-base.com Blog: https://oracle-base.com/blog Twitter: https://twitter.com/oraclebase Cameo by Alex Gorbachev : Blog: http://www.oracloid.com/ Twitter: https://twitter.com/alexgorbachev Website: http://www.pythian.com/about/alex-gorbachev/ Cameo appearances are for fun, not an endorsement of the content of this video.
Views: 1551 ORACLE-BASE.com
In this video we will learn about pivot operator. Pivot is a sql server operator that can be used to turn unique values from one column, into multiple columns in the output, there by effectively rotating a table. Text version of the video http://csharp-video-tutorials.blogspot.com/2012/10/pivot-operator-in-sql-server-part-54.html Slides http://csharp-video-tutorials.blogspot.com/2013/09/part-54-pivot-in-sql-server-2008.html All SQL Server Text Articles http://csharp-video-tutorials.blogspot.com/p/free-sql-server-video-tutorials-for.html All SQL Server Slides http://csharp-video-tutorials.blogspot.com/p/sql-server.html All Dot Net and SQL Server Tutorials in English https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd All Dot Net and SQL Server Tutorials in Arabic https://www.youtube.com/c/KudvenkatArabic/playlists
Views: 181887 kudvenkat
Text version of the video http://csharp-video-tutorials.blogspot.com/2013/01/what-to-choose-for-performance.html Slides http://csharp-video-tutorials.blogspot.com/2013/09/part-62-what-to-choose-for-performance.html All SQL Server Text Articles http://csharp-video-tutorials.blogspot.com/p/free-sql-server-video-tutorials-for.html All SQL Server Slides http://csharp-video-tutorials.blogspot.com/p/sql-server.html All Dot Net and SQL Server Tutorials in English https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd All Dot Net and SQL Server Tutorials in Arabic https://www.youtube.com/c/KudvenkatArabic/playlists What to choose for performance - SubQuery or Joins According to MSDN, in sql server, in most cases, there is usually no performance difference between queries that uses sub-queries and equivalent queries using joins. For example, on my machine I have 400,000 records in tblProducts table 600,000 records in tblProductSales tables The following query, returns, the list of products that we have sold atleast once. This query is formed using sub-queries. When I execute this query I get 306,199 rows in 6 seconds Select Id, Name, Description from tblProducts where ID IN ( Select ProductId from tblProductSales ) At this stage please clean the query and execution plan cache using the following T-SQL command. CHECKPOINT; GO DBCC DROPCLEANBUFFERS; Go DBCC FREEPROCCACHE; GO Now, run the query that is formed using joins. Notice that I get the exact same 306,199 rows in 6 seconds. Select distinct tblProducts.Id, Name, Description from tblProducts inner join tblProductSales on tblProducts.Id = tblProductSales.ProductId Please Note: I have used automated sql script to insert huge amounts of this random data. Please watch Part 61 of SQL Server tutorial, in which we have discussed about this automated script. According to MSDN, in some cases where existence must be checked, a join produces better performance. Otherwise, the nested query must be processed for each result of the outer query. In such cases, a join approach would yield better results. The following query returns the products that we have not sold atleast once. This query is formed using sub-queries. When I execute this query I get 93,801 rows in 3 seconds Select Id, Name, [Description] from tblProducts where Not Exists(Select * from tblProductSales where ProductId = tblProducts.Id) When I execute the below equivalent query, that uses joins, I get the exact same 93,801 rows in 3 seconds. Select tblProducts.Id, Name, [Description] from tblProducts left join tblProductSales on tblProducts.Id = tblProductSales.ProductId where tblProductSales.ProductId IS NULL In general joins work faster than sub-queries, but in reality it all depends on the execution plan that is generated by SQL Server. It does not matter how we have written the query, SQL Server will always transform it on an execution plan. If sql server generates the same plan from both queries, we will get the same result. I would say, rather than going by theory, turn on client statistics and execution plan to see the performance of each option, and then make a decision. In a later video session we will discuss about client statistics and execution plans in detail.
Views: 86703 kudvenkat
Sometimes you want to convert rows to columns. Or convert columns back into rows. Luckily SQL has two clauses to help you do this: PIVOT & UNPIVOT Using these you can easily transform your rows to columns and back again. Want more? Take the course: https://devgym.oracle.com/pls/apex/dg/class/databases-for-developers-next-level.html Read the blog post: https://blogs.oracle.com/sql/how-to-convert-rows-to-columns-and-back-again-with-sql-aka-pivot-and-unpivot Read the docs: PIVOT: https://docs.oracle.com/en/database/oracle/oracle-database/18/dwhsg/sql-analysis-reporting-data-warehouses.html#GUID-05BB22CD-0F53-4C90-AE84-CE3F88DBD591 UNPIVOT: https://docs.oracle.com/en/database/oracle/oracle-database/18/dwhsg/sql-analysis-reporting-data-warehouses.html#GUID-B0AC9284-DDC1-4EF7-84CD-A27DF7F8DD57 Need help with SQL? Ask us over on AskTOM: https://asktom.oracle.com Twitter: https://twitter.com/ChrisRSaxon Daily SQL Twitter tips: https://twitter.com/SQLDaily All Things SQL blog: https://blogs.oracle.com/sql/ ============================ The Magic of SQL with Chris Saxon Copyright © 2015 Oracle and/or its affiliates. Oracle is a registered trademark of Oracle and/or its affiliates. All rights reserved. Other names may be registered trademarks of their respective owners. Oracle disclaims any warranties or representations as to the accuracy or completeness of this recording, demonstration, and/or written materials (the “Materials”). The Materials are provided “as is” without any warranty of any kind, either express or implied, including without limitation warranties or merchantability, fitness for a particular purpose, and non-infringement.
Views: 1109 The Magic of SQL
A quick example of using the PIVOT and UNPIVOT operators introduced in Oracle Database 11g. For more information see: https://oracle-base.com/articles/11g/pivot-and-unpivot-operators-11gr1 Website: https://oracle-base.com Blog: https://oracle-base.com/blog Twitter: https://twitter.com/oraclebase Cameo by Moans Norgaard Blog: http://wedonotuse.blogspot.co.uk/ Twitter: https://twitter.com/mnorgaard Cameo appearances are for fun, not an endorsement of the content of this video.
Views: 9295 ORACLE-BASE.com
Acesse o desafio: http://novidades.aprendaplsql.com/15-dias-de-funcoes-oracle A função PIVOT cria uma matriz de informações conforme as necessidades do usuário. SELECT e.manager_id, e.department_id, count(e.employee_id) FROM hr.employees e GROUP BY e.manager_id, e.department_id ORDER BY e.manager_id, e.department_id; SELECT * FROM (SELECT manager_id, department_id, employee_id FROM hr.employees ) PIVOT ( COUNT(employee_id) FOR department_id IN (10, 20, 30, 50, 60, 80, 90) ) ORDER BY manager_id SELECT e.manager_id, d.department_name, count(e.employee_id) FROM hr.employees e INNER JOIN hr.departments d ON e.department_id = d.department_id GROUP BY e.manager_id, d.department_name ORDER BY e.manager_id, d.department_name; WITH valores_pivot AS ( SELECT e.manager_id manager_id, d.department_name department_name, e.employee_id qtd_empregados FROM hr.employees e INNER JOIN hr.departments d ON e.department_id = d.department_id ) SELECT * FROM valores_pivot PIVOT ( COUNT(qtd_empregados) FOR department_name IN ('IT', 'Administration', 'Executive', 'Marketing', 'Purchasing', 'Sales', 'Shipping') ) ORDER BY manager_id; Funções Oracle: https://www.youtube.com/playlist?list=PLMaqczuL07LkjrX6Rvx6TdNM-1nbUKG8p
Views: 2235 Aprenda PL/SQL
This video demonstrates one of the ways to query hierarchical data from Oracle. For more information see: https://oracle-base.com/articles/misc/hierarchical-queries Website: https://oracle-base.com Blog: https://oracle-base.com/blog Twitter: https://twitter.com/oraclebase Cameo by Arjen Visser Blog: http://blog.dbvisit.com/ Twitter: https://twitter.com/dbvisit Website: http://www.dbvisit.com/ Cameo appearances are for fun, not an endorsement of the content of this video.
Views: 27055 ORACLE-BASE.com
This Course can only be played using a subscription. You can play only first 3 chapters for free. Click Here to avail a subscription This Intermediate FT course expands on the Introduction to Oracle 11g course. It gives you a more detailed grass roots knowledge of Oracle SQL and Oracle PL/SQL. Author and expert Gavin Powell covers a wide range of topics including many types of queries, expressions, and statements. He also explores sequences, synonyms, views, materialized views, user access and security, working with indexes, and the basics of programming with PL/SQL. As with the introductory course, this intermediate course is not focused on Oracle Certification but will give you a good start towards some more advanced aspects of coding SQL and PL/SQL. Parts: 01. Composite Query Syntax. 02. Using Composite Queries pt. 1. 03. Using Composite Queries pt. 2. 04. Hierarchical Queries. 05. Hierarchical Query Syntax. 06. Hierarchical Family Trees pt. 1. 07. Hierarchical Family Trees pt. 2. 08. Flashback Query Syntax. 09. Flashback Query Pseudocolumns. 10. Using Flashback Queries pt. 1. 11. Using Flashback Queries pt. 2.
Views: 1137 Free Training
Views: 54675 .NET Interview Preparation videos
This video demonstrated how to change the logic of a given row calculation based on the value in another column. You may run in to a scenerion where you need to implement this when you have a requirement that the rows with one dimension value have logic "X" (for instance Mean) and the the rows with a different dimension value have logic "Y" (for instance a Median) assigned. This is accomplished with the Switch (Case) expression in the OBIEE formula builder.
Views: 8051 Justin W. Steigerwalt
Unpivot is the opposite of pivot clause helping you to transpose columns into rows. Suppose if you 5 rows A,B,C,D and E. Now you can transpose this five rows into a column say fld with value A,B,C,D and E with the value of it's respective column into another columns say fld_val.
Views: 977 Subhroneel Ganguly
If you'd like to help fund Wise Owl's conversion of tea and biscuits into quality training videos you can click this link https://www.wiseowl.co.uk/donate?t=1 to make a donation. Thanks for watching! By Andrew Gould https://www.wiseowl.co.uk - The Pivot Operator in Microsoft SQL Server allows you to group data by columns, as well as by rows, to create simple static pivot tables. This video teaches you how to use the pivot operator including how to apply aggregate functions and, importantly, a quick method for listing out the column headings of your pivot table using the QuoteName function. You can download the script to create the Movies database used in this video at the following link: https://www.wiseowl.co.uk/files/execise-question-files/qf-898.zip You can view a written version of this tutorial at: https://www.wiseowl.co.uk/blog/s417/pivoting-sql-data.htm You can see the range of resources and courses we offer in SQL Server here: https://www.wiseowl.co.uk/sql/ Visit www.wiseowl.co.uk for more online training resources in Microsoft Excel, Microsoft Access, Microsoft PowerPoint, Microsoft Word, Microsoft Project, Microsoft Publisher, Microsoft Visio, SQL Server, Reporting Services, Analysis Services, Visual Studio, ASP.NET, VB.NET, C# and more!
Views: 41121 WiseOwlTutorials
In this video we will discuss about Corelated Subqueries In Part 59, we discussed about 2 examples that uses subqueries. Please watch Part 59, before proceeding with this video. We will be using the same tables and queries from Part 59. In the example below, sub query is executed first and only once. The sub query resutls are then used by the outer query. In a non-corelated subquery, the subquery can be executed independently of the outer query. Select [Id], [Name], [Description] from tblProducts where Id not in (Select Distinct ProductId from tblProductSales) If the subquery depends on the outer query for its values, then that sub query is called as a correlated subquery. In the where clause of the subquery below, "ProductId" column get it's value from tblProducts table that is present in the outer query. So, here the subquery is dependent on the outer query for it's value, hence this subquery is a correlated subquery. Correlated subqueries get executed, once for every row that is selected by the outer query. corelated subquery, cannot be executed independently of the outer query. Select [Name], (Select SUM(QuantitySold) from tblProductSales where ProductId = tblProducts.Id) as TotalQuantity from tblProducts order by Name Text version of the video http://csharp-video-tutorials.blogspot.com/2013/01/correlated-subquery-in-sql-part-60.html Slides http://csharp-video-tutorials.blogspot.com/2013/09/part-60-co-related-subqueries.html All SQL Server Text Articles http://csharp-video-tutorials.blogspot.com/p/free-sql-server-video-tutorials-for.html All SQL Server Slides http://csharp-video-tutorials.blogspot.com/p/sql-server.html All Dot Net and SQL Server Tutorials in English https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd All Dot Net and SQL Server Tutorials in Arabic https://www.youtube.com/c/KudvenkatArabic/playlists
Views: 126462 kudvenkat
Views: 256056 Questpond
If You have Any Queries Comment Me in Comment Box or MY WHATSUP NUMBER 08508598428. Subscribe this Youtube Channel for Upcomming Videos. join My facebook Sql and PLSQL Discussion Page https://www.facebook.com/Oracle-SQL-PLSQL-Practical-Discussion-334342290310499/
Views: 233 Manikandan R
This oracle video will show you how to use With Clause In Oracle PL SQL. with in pl sql oracle tutorial for beginners With clause is used to simplify the complex sql queries. By using the with clause you can get faster query performance. You can simplify the complex subquery logic. WITH clause is called subquery factoring. For more tutorial please visit #techquerypond https://techquerypond.com https://techquerypond.wordpress.com https://twitter.com/techquerypond with query in oracle with query in oracle
Views: 8591 Tech Query Pond
This video is out of audio and video sync, please find the Synced video uploaded on https://youtu.be/8EUQyDeWSq4 Always thought we cannot have a create statement inside a pl/sql block, well here is the answer for that, and along with that learn how to generate sql statement on the go. This video demonstrates the use of Dynamic SQL with the help of Execute Immediate. The video also demonstrates the INTO and USING clause of the execute immediate statement.
Views: 3228 Kishan Mashru
In this tutorial, you'll learn will learn how to use with clause PL/SQL (Procedural Language/Structured Query Language) is Oracle Corporation's procedural extension for SQL and the Oracle relational database. PL/SQL is available in Oracle Database (since version 7), TimesTen in-memory database (since version 11.2.1), and IBM DB2 (since version 9.7). Oracle Corporation usually extends PL/SQL functionality with each successive release of the Oracle Database. PL/SQL includes procedural language elements such as conditions and loops. It allows declaration of constants and variables, procedures and functions, types and variables of those types, and triggers. It can handle exceptions (runtime errors). Arrays are supported involving the use of PL/SQL collections. Implementations from version 8 of Oracle Database onwards have included features associated with object-orientation. One can create PL/SQL units such as procedures, functions, packages, types, and triggers, which are stored in the database for reuse by applications that use any of the Oracle Database programmatic interfaces. PL/SQL works analogously to the embedded procedural languages associated with other relational databases. For example, Sybase ASE and Microsoft SQL Server have Transact-SQL, PostgreSQL has PL/pgSQL (which emulates PL/SQL to an extent), and IBM DB2 includes SQL Procedural Language, which conforms to the ISO SQL’s SQL/PSM standard. The designers of PL/SQL modeled its syntax on that of Ada. Both Ada and PL/SQL have Pascal as a common ancestor, and so PL/SQL also resembles Pascal in several aspects. However, the structure of a PL/SQL package does not resemble the basic Object Pascal program structure as implemented by a Borland Delphi or Free Pascal unit. Programmers can define public and private global data-types, constants and static variables in a PL/SQL package. PL/SQL also allows for the definition of classes and instantiating these as objects in PL/SQL code. This resembles usage in object-oriented programming languages like Object Pascal, C++ and Java. PL/SQL refers to a class as an "Abstract Data Type" (ADT) or "User Defined Type" (UDT), and defines it as an Oracle SQL data-type as opposed to a PL/SQL user-defined type, allowing its use in both the Oracle SQL Engine and the Oracle PL/SQL engine. The constructor and methods of an Abstract Data Type are written in PL/SQL. The resulting Abstract Data Type can operate as an object class in PL/SQL. Such objects can also persist as column values in Oracle database tables. PL/SQL is fundamentally distinct from Transact-SQL, despite superficial similarities. Porting code from one to the other usually involves non-trivial work, not only due to the differences in the feature sets of the two languages, but also due to the very significant differences in the way Oracle and SQL Server deal with concurrency and locking. There are software tools available that claim to facilitate porting including Oracle Translation Scratch Editor, CEITON MSSQL/Oracle Compiler  and SwisSQL. The StepSqlite product is a PL/SQL compiler for the popular small database SQLite. PL/SQL Program Unit A PL/SQL program unit is one of the following: PL/SQL anonymous block, procedure, function, package specification, package body, trigger, type specification, type body, library. Program units are the PL/SQL source code that is compiled, developed and ultimately executed on the database. The basic unit of a PL/SQL source program is the block, which groups together related declarations and statements. A PL/SQL block is defined by the keywords DECLARE, BEGIN, EXCEPTION, and END. These keywords divide the block into a declarative part, an executable part, and an exception-handling part. The declaration section is optional and may be used to define and initialize constants and variables. If a variable is not initialized then it defaults to NULL value. The optional exception-handling part is used to handle run time errors. Only the executable part is required. A block can have a label. Package Packages are groups of conceptually linked functions, procedures, variables, PL/SQL table and record TYPE statements, constants, cursors etc. The use of packages promotes re-use of code. Packages are composed of the package specification and an optional package body. The specification is the interface to the application; it declares the types, variables, constants, exceptions, cursors, and subprograms available. The body fully defines cursors and subprograms, and so implements the specification. Two advantages of packages are: Modular approach, encapsulation/hiding of business logic, security, performance improvement, re-usability. They support object-oriented programming features like function overloading and encapsulation. Using package variables one can declare session level (scoped) variables, since variables declared in the package specification have a session scope.
Views: 13003 radhikaravikumar
In this training video we will learn load data in a report, Flip rows to columns in Oracle SQL
Views: 203 Spod ssppoodd
انشاء جدول - Create Table ........................................................... تواصل معانا علي الفيس بوك من هنا : https://www.facebook.com/askgad ........................................................... تواصل معانا علي موقعنا من هنا : https://www.askgad.com
Views: 1180 Ask Gad
DURGASOFT is INDIA's No.1 Software Training Center offers online training on various technologies like JAVA, .NET , ANDROID,HADOOP,TESTING TOOLS ,ADF,INFORMATICA,TABLEAU,IPHONE,OBIEE,ANJULAR JS, SAP... courses from Hyderabad & Bangalore -India with Real Time Experts. Mail us your requirements to [email protected] so that our Supporting Team will arrange Demo Sessions. Ph:Call +91-8885252627,+91-7207212428,+91-7207212427,+91-8096969696. http://durgasoft.com http://durgasoftonlinetraining.com https://www.facebook.com/durgasoftware http://durgajobs.com https://www.facebook.com/durgajobsinfo......
Views: 6389 Durga Software Solutions
RANK and DENCE_RANK in PL/SQL
Views: 14548 Naresh i Technologies
Acesse o desafio: http://novidades.aprendaplsql.com/15-dias-de-funcoes-oracle Vídeo Função PIVOT https://youtu.be/9uCAMAOytsM A função UNPIVOT desfaz uma matriz de informações conforme as necessidades do usuário. CREATE table matriz_gerentes AS WITH valores_pivot AS ( SELECT e.manager_id manager_id, d.department_name department_name, e.employee_id qtd_empregados FROM hr.employees e INNER JOIN hr.departments d ON e.department_id = d.department_id ) SELECT * FROM valores_pivot PIVOT ( COUNT(qtd_empregados) FOR department_name IN ('IT' AS IT, 'Administration' AS Administration, 'Executive' AS Executive, 'Marketing' AS Marketing, 'Purchasing' AS Purchasing, 'Sales' AS Sales, 'Shipping' AS Shipping) ) ORDER BY manager_id; SELECT * FROM matriz_gerentes; SELECT * FROM matriz_gerentes UNPIVOT ( qtd_empregados FOR department_name IN (IT, Administration, Executive, Marketing, Purchasing, Sales, Shipping) ) ORDER BY manager_id, department_name Funções Oracle: https://www.youtube.com/playlist?list=PLMaqczuL07LkjrX6Rvx6TdNM-1nbUKG8p
Views: 901 Aprenda PL/SQL
In this video you learn how to apply a saved analysis as a subquery filter. The example in this video is from HCM but applies to all applications that use OTBi and OTBI Enterprise including Oracle Financials Cloud, Oracle Project Portfolio Management Cloud, and Oracle Procurement Cloud. Please note that all of the techniques and concepts in this tutorial also apply to OTBI Enterprise although the available subject areas will be different.
Views: 1408 Oracle EPM Tutorials