Tải sql 2023

pre-FOSDEM MySQL Days 2023
pre-FOSDEM MySQL Days are back for a 5th edition !

Intersect and Except in MySQL 8.0
With the latest MySQL release [8.0.31], MySQL adds support for the SQL standard INTERSECT and EXCEPT table operators.

New MySQL HeatWave capabilities released in 8.0.31
New MySQL HeatWave capabilities released in 8.0.31

Achieve Real-Time Marketing Analytics with MySQL HeatWave
Many companies and digital marketing agencies want to aggregate data from various sources in real-time to build rich, highly segmented customer profiles to send the right offer to the right prospect, via the right channel, at the right time—and are struggling. MySQL HeatWave helps solve this...

Hello TypeScript
Better support for TypeScript applications using MySQL Connector/Node.js

MySQL HeatWave Lakehouse Announcement Lauded by Top Industry Analysts
Leading industry analysts such as Constellation research, Wikibon, Futurum, Moor Insights & Strategy, KuppingerCole Analysts, and DBInsight, had the following to say about the recent MySQL HeatWave Lakehouse announcement.

MySQL Connector/J has new Maven Coordinates
We are relocating MySQL Connector/J artifacts in Maven in order to make things right and follow current Central Repository publishing requirements. Please be prepared to update dependencies in your project's POM file.

Announcing October 2022 Releases featuring MySQL 8.0.31
The October 2022 MySQL releases are now available.

More Blogs »

Table of contents

      • Basic SQL Interview Questions
        • What is SQL?
        • What is Database?
        • What is DBMS?
        • What is RDBMS? How is it different from DBMS?
        • How to create a table in SQL?
        • How to delete a table in SQL?
        • How to change a table name in SQL?
        • How to delete a row in SQL?
        • How to create a database in SQL?
        • What is Normalization in SQL?
        • What is join in SQL?
        • How to insert a date in SQL?
        • What is Primary Key in SQL?
        • How do I view tables in SQL?
        • What is PL/SQL?
        • How can I see all tables in SQL?
        • What is ETL in SQL?
        • How to install SQL?
        • What is the update command in SQL?
        • How to rename column name in SQL Server?
        • What are the types of SQL Queries?
        • Write a Query to display the number of employees working in each region? 
        • What are Nested Triggers?
        • Write SQL query to fetch employee names having a salary greater than or equal to 20000 and less than or equal 10000.
        • Given a table Employee having columns empName and empId, what will be the result of the SQL query below? select empName from Employee order by 2 asc;
        • What is OLTP?
        • What is Data Integrity?
        • What is OLAP?
        • Find the Constraint information from the table?
        • Can you get the list of employees with same salary? 
        • What is an alternative for the TOP clause in SQL?
        • Will the following statement gives an error or 0 as output? SELECT AVG [NULL]
        • What is the Cartesian product of the table?
        • What is a schema in SQL?
        • How to delete a column in SQL?
        • What is a unique key in SQL?
        • How to implement multiple conditions using the WHERE clause?
        • What is the difference between SQL vs PL/SQL?
        • What is the difference between SQL having vs where?
      • SQL Interview Questions for Experienced
        • What is SQL injection?
        • What is a trigger in SQL?
        • How to insert multiple rows in SQL?
        • How to find the nth highest salary in SQL?
        • How to copy table in SQL?
        • How to add a new column in SQL?
        • How to use LIKE in SQL?
        • If we drop a table, does it also drop related objects like constraints, indexes, columns, default, views and sorted procedures?
        • Can we disable a trigger? If yes, How?
        • What is a Live Lock?
        • How to fetch alternate records from a table?
        • Define COMMIT and give an example?
        • Can you join the table by itself? 
        • Explain Equi join with an example.
        • How do we avoid getting duplicate entries in a query?
        • How can you create an empty table from an existing table?
        • Write a Query to display odd records from student table?
        • Explain Non-Equi Join with an example?
        • How can you delete duplicate records in a table with no primary key?
        • Difference between NVL and NVL2 functions?

Are you an aspiring SQL Developer? A career in SQL has seen an upward trend in 2023, and you can be a part of the ever-so-growing community. So, if you are ready to indulge yourself in the pool of knowledge and be prepared for the upcoming SQL interview, then you are at the right place.

We have compiled a comprehensive list of SQL Interview Questions and Answers that will come in handy at the time of need. Once you are prepared with the questions we mentioned in our list, you will be ready to get into numerous SQL-worthy job roles like SQL Developer, Business Analyst, BI Reporting Engineer, Data Scientist, Software Engineer, Database Administrator, Quality Assurance Tester, BI Solution Architect and more.

Great Learning has prepared a list of the top 10 SQL interview questions that will help you during your interview.

  • What is SQL?
  • What is Database?
  • What is DBMS?
  • What is RDBMS? How is it different from DBMS?
  • How to create a table in SQL?
  • How to delete a table in SQL?
  • How to change a table name in SQL?
  • How to delete a row in SQL?
  • How to create a database in SQL?
  • What is Normalization in SQL?

Now, without any further ado, let’s kick off our SQL learning journey.

  • Basic SQL Interview Questions
  • SQL Interview Questions for Experienced
  • SQL Interview Questions for Developers
  • SQL Joins Interview Questions
  • Advanced SQL Interview Questions
  • PostgreSQL Interview Questions
  • SQL Practice Questions
  • Frequently Asked Questions in SQL

Let’s get started!

Basic SQL Interview Questions

All set to kickstart your career in SQL? Look no further and start your professional career with these SQL interview questions for freshers. We will start with the basics and slowly move towards slightly advanced questions to set the pace. If you are an experienced professional, this section will help you brush up on your SQL skills.

What is SQL?

The acronym SQL stands for Structured Query Language. It is the typical language used for relational database maintenance and a wide range of data processing tasks. The first SQL database was created in 1970. It is a database language used for operations such as database creation, deletion, retrieval, and row modification. It is occasionally pronounced “sequel.” It can also be used to manage structured data, which is made up of variables called entities and relationships between those entities.

What is Database?

A database is a system that helps in collecting, storing and retrieving data. Databases can be complex, and such databases are developed using design and modelling approaches.

What is DBMS?

DBMS stands for Database Management System which is responsible for the creating, updating, and managing of the database. 

What is RDBMS? How is it different from DBMS?

RDBMS stands for Relational Database Management System that stores data in the form of a collection of tables, and relations can be defined between the common fields of these tables.

How to create a table in SQL?

The command to create a table in SQL is extremely simple:

 CREATE TABLE table_name [
	column1 datatype,
	column2 datatype,
	column3 datatype,
   ....
];

We will start off by giving the keywords, CREATE TABLE, and then we will give the name of the table. After that in braces, we will list out all the columns along with their data types.

For example, if we want to create a simple employee table:

CREATE TABLE employee [
	name varchar[25],
	age int,
	gender varchar[25],
   ....
];

How to delete a table in SQL?

There are two ways to delete a table from SQL: DROP and TRUNCATE. The DROP TABLE command is used to completely delete the table from the database. This is the command:

DROP TABLE table_name;

The above command will completely delete all the data present in the table along with the table itself.

But if we want to delete only the data present in the table but not the table itself, then we will use the truncate command:

DROP TABLE table_name ;

How to change a table name in SQL?

This is the command to change a table name in SQL:

ALTER TABLE table_name
RENAME TO new_table_name;

We will start off by giving the keywords ALTER TABLE, then we will follow it up by giving the original name of the table, after that, we will give in the keywords RENAME TO and finally, we will give the new table name.

For example, if we want to change the “employee” table to “employee_information”, this will be the command:

ALTER TABLE employee
RENAME TO employee_information;

How to delete a row in SQL?

We will be using the DELETE query to delete existing rows from the table:

DELETE FROM table_name
WHERE [condition];

We will start off by giving the keywords DELETE FROM, then we will give the name of the table, and after that we will give the WHERE clause and give the condition on the basis of which we would want to delete a row.

For example, from the employee table, if we would like to delete all the rows, where the age of the employee is equal to 25, then this will be the command:

DELETE FROM employee
WHERE [age=25];

How to create a database in SQL?

A database is a repository in SQL, which can comprise multiple tables.

This will be the command to create a database in sql:

CREATE DATABASE database_name.

What is Normalization in SQL?

Normalization is used to decompose a larger, complex table into simple and smaller ones. This helps us in removing all the redundant data.

Generally, in a table, we will have a lot of redundant information which is not required, so it is better to divide this complex table into multiple smaller tables which contain only unique information.

First normal form:

A relation schema is in 1NF, if and only if:

  • All attributes in the relation are atomic[indivisible value]
  • And there are no repeating elements or groups of elements.

Second normal form:

A relation is said to be in 2NF, if and only if:

  • It is in 1st Normal Form.
  • No partial dependency exists between non-key attributes and key attributes.

Third Normal form:

A relation R is said to be in 3NF if and only if:

  • It is in 2NF.
  • No transitive dependency exists between non-key attributes and key attributes through another non-key attribute

What is join in SQL?

Joins are used to combine rows from two or more tables, based on a related column between them.

Types of Joins:

INNER JOIN − Returns rows when there is a match in both tables.

LEFT JOIN − Returns all rows from the left table, even if there are no matches in the right table.

RIGHT JOIN − Returns all rows from the right table, even if there are no matches in the left table.

FULL OUTER JOIN − Returns rows when there is a match in one of the tables.

SELF JOIN − Used to join a table to itself as if the table were two tables, temporarily renaming at least one table in the SQL statement.

CARTESIAN JOIN [CROSS JOIN] − Returns the Cartesian product of the sets of records from the two or more joined tables.

INNER JOIN:

The INNER JOIN creates a new result table by combining column values of two tables [table1 and table2] based upon the join-predicate. The query compares each row of table1 with each row of table2 to find all pairs of rows which satisfy the join-predicate.

SYNTAX:

SELECT table1.col1, table2.col2,…, table1.coln
FROM table1
INNER JOIN table2
ON table1.commonfield = table2.commonfield;

LEFT JOIN:

The LEFT JOIN returns all the values from the left table, plus matched values from the right table or NULL in case of no matching join predicate.

SYNTAX:

SELECT table1.col1, table2.col2,…, table1.coln
FROM table1
LEFT JOIN table2
ON table1.commonfield = table2.commonfield;

RIGHT JOIN:

The RIGHT JOIN returns all the values from the right table, plus matched values from the left table or NULL in case of no matching join predicate.

SYNTAX:

SELECT table1.col1, table2.col2,…, table1.coln
FROM table1
RIGHT JOIN table2
ON table1.commonfield = table2.commonfield;

FULL OUTER JOIN:

The FULL OUTER JOIN combines the results of both left and right outer joins. The joined table will contain all records from both the tables and fill in NULLs for missing matches on either side.

SYNTAX:

SELECT table1.col1, table2.col2,…, table1.coln
FROM table1
Left JOIN table2
ON table1.commonfield = table2.commonfield;
Union
SELECT table1.col1, table2.col2,…, table1.coln
FROM table1
Right JOIN table2
ON table1.commonfield = table2.commonfield;

SELF JOIN:

The SELF JOIN joins a table to itself; temporarily renaming at least one table in the SQL statement.

SYNTAX:

SELECT a.col1, b.col2,..., a.coln
FROM table1 a, table1 b
WHERE a.commonfield = b.commonfield;

Joins in SQL

How to insert a date in SQL?

If the RDBMS is MYSQL, this is how we can insert date:

"INSERT INTO tablename [col_name, col_date] VALUES ['DATE: Manual Date', '2020-9-10']";

What is Primary Key in SQL?

Primary Key is a constraint in SQL. So, before understanding what exactly is a primary key, let’s understand what exactly is a constraint in SQL. Constraints are the rules enforced on data columns on a table. These are used to limit the type of data that can go into a table. Constraints can either be column level or table level. 

Let’s look at the different types of constraints which are present in SQL:

Constraint Description
NOT NULL Ensures that a column cannot have a NULL value.
DEFAULT Provides a default value for a column when none is specified.
UNIQUE Ensures that all the values in a column are different
PRIMARY Uniquely identifies each row/record in a database table
FOREIGN Uniquely identifies a row/record in any another database table
CHECK The CHECK constraint ensures that all values in a column satisfy certain conditions.
INDEX Used to create and retrieve data from the database very quickly.

You can consider the Primary Key constraint to be a combination of UNIQUE and NOT NULL constraint. This means that if a column is set as a primary key, then this particular column cannot have any null values present in it and also all the values present in this column must be unique.

How do I view tables in SQL?

To view tables in SQL, all you need to do is give this command:

Show tables;

What is PL/SQL?

PL SQL stands for Procedural language constructs for Structured Query Language. PL SQL was introduced by Oracle to overcome the limitations of plain sql. So, pl sql adds in procedural language approach to the plain vanilla sql.

One thing to be noted over here is that pl sql is only for oracle databases. If you don’t have an Oracle database, then you cant work with PL SQL. However, if you wish to learn more about Oracle, you can also take up free oracle courses and enhance your knowledge.

While, with the help of sql, we were able to DDL and DML queries, with the help of PL SQL, we will be able to create functions, triggers and other procedural constructs.

Know More About SQL Triggers

How can I see all tables in SQL?

Different database management systems have different queries to see all the tables.

To see all the tables in MYSQL, we would have to use this query:

show tables;

This is how we can see all tables in ORACLE:

SELECT 
    table_name
FROM
    User_tables;

This is how we can extract all tables in SQL Server:

SELECT 
    *
FROM
    Information_schema.tables;

What is ETL in SQL?

ETL stands for Extract, Transform and Load. It is a three-step process, where we would have to start off by extracting the data from sources. Once we collate the data from different sources, what we have is raw data. This raw data has to be transformed into the tidy format, which will come in the second phase. Finally, we would have to load this tidy data into tools which would help us to find insights.

How to install SQL?

SQL stands for Structured Query Language and it is not something you can install. To implement sql queries, you would need a relational database management system. There are different varieties of relational database management systems such as:

  • ORACLE
  • MYSQL
  • SQL Server

Hence, to implement sql queries, we would need to install any of these Relational Database Management Systems.

What is the update command in SQL?

The update command comes under the DML[Data Manipulation Langauge] part of sql and is used to update the existing data in the table.

UPDATE employees
SET last_name=‘Cohen’
WHERE employee_id=101;

With this update command, I am changing the last name of the employee.

How to rename column name in SQL Server?

Rename column in SQL: When it comes to SQL Server, it is not possible to rename the column with the help of ALTER TABLE command, we would have to use sp_rename.

What are the types of SQL Queries?

We have four types of SQL Queries:

  • DDL [Data Definition Language]: the creation of objects
  • DML [Data Manipulation Language]: manipulation of data
  • DCL [Data Control Language]: assignment and removal of permissions
  • TCL [Transaction Control Language]: saving and restoring changes to a database

Let’s look at the different commands under DDL:

Command Description
CREATE Create objects in the database
ALTER Alters the structure of the database object
DROP Delete objects from the database
TRUNCATE Remove all records from a table permanently
COMMENT Add comments to the data dictionary
RENAME Rename an object

Write a Query to display the number of employees working in each region? 

SELECT region, COUNT[gender] FROM employee GROUP BY region;

What are Nested Triggers?

Triggers may implement DML by using INSERT, UPDATE, and DELETE statements. These triggers that contain DML and find other triggers for data modification are called Nested Triggers.

Write SQL query to fetch employee names having a salary greater than or equal to 20000 and less than or equal 10000.

By using BETWEEN in the where clause, we can retrieve the Employee Ids of employees with salary >= 20000 and value GROUP BY Column_nmae Having column_name>or999999]THEN RAISE_APPLICATION_ERROR[-20000, 'Account transaction exceeding the daily deposit on SAVINGS account.']; end if; end;

How to insert multiple rows in SQL?

To insert multiple rows in SQL we can follow the below syntax:

INSERT INTO table_name [column1, column2,column3...]
VALUES
    [value1, value2, value3…..],
    [value1, value2, value3….],
    ...
    [value1, value2, value3];

We start off by giving the keywords INSERT INTO then we give the name of the table into which we would want to insert the values. We will follow it up with the list of the columns, for which we would have to add the values. Then we will give in the VALUES keyword and finally, we will give the list of values.

Here is an example of the same:

INSERT INTO employees [
    name,
    age,
    salary]
VALUES
    [
        'Sam',
        21,
       75000
    ],
    [
        ' 'Matt',
        32,
       85000    ],

    [
        'Bob',
        26,
       90000
    ];

In the above example, we are inserting multiple records into the table called employees.

How to find the nth highest salary in SQL?

This is how we can find the nth highest salary in SQL SERVER using TOP keyword:

SELECT TOP 1 salary FROM [ SELECT DISTINCT TOP N salary FROM #Employee ORDER BY salary DESC ] AS temp ORDER BY salary

This is how we can find the nth highest salary in MYSQL using LIMIT keyword:

SELECT salary FROM Employee ORDER BY salary DESC LIMIT N-1, 1

How to copy table in SQL?

We can use the SELECT INTO statement to copy data from one table to another. Either we can copy all the data or only some specific columns.

This is how we can copy all the columns into a new table:

SELECT *
INTO newtable
FROM oldtable
WHERE condition;

If we want to copy only some specific columns, we can do it this way:

SELECT column1, column2, column3, ...
INTO newtable 
FROM oldtable
WHERE condition;

How to add a new column in SQL?

We can add a new column in SQL with the help of alter command:

ALTER TABLE employees ADD COLUMN contact INT[10];

This command helps us to add a new column named as contact in the employees table.

How to use LIKE in SQL?

The LIKE operator checks if an attribute value matches a given string pattern. Here is an example of LIKE operator

SELECT * FROM employees WHERE first_name like ‘Steven’; 

With this command, we will be able to extract all the records where the first name is like “Steven”.

If we drop a table, does it also drop related objects like constraints, indexes, columns, default, views and sorted procedures?

Yes, SQL server drops all related objects, which exists inside a table like constraints, indexex, columns, defaults etc. But dropping a table will not drop views and sorted procedures as they exist outside the table. 

Can we disable a trigger? If yes, How?

Yes, we can disable a single trigger on the database by using “DISABLE TRIGGER triggerName ON. We also have an option to disable all the trigger by using, “DISABLE Trigger ALL ON ALL SERVER”.

What is a Live Lock?

A live lock is one where a request for an exclusive lock is repeatedly denied because a series of overlapping shared locks keep interferring. A live lock also occurs when read transactions create a table or page. 

How to fetch alternate records from a table?

Records can be fetched for both Odd and Even row numbers – To display even numbers –

Select employeeId from [Select rowno, employeeId from employee] where mod[rowno,2]=0 

To display odd numbers –

Select employeeId from [Select rowno, employeeId from employee] where mod[rowno,2]=1

Define COMMIT and give an example?

When a COMMIT is used in a transaction, all changes made in the transaction are written into the database permanently.

Example:

BEGIN TRANSACTION; DELETE FROM HR.JobCandidate WHERE JobCandidateID = 20; COMMIT TRANSACTION; 

The above example deletes a job candidate in a SQL server.

Can you join the table by itself? 

A table can be joined to itself using self join, when you want to create a result set that joins records in a table with other records in the same table.

Explain Equi join with an example.

When two or more tables have been joined using equal to operator then this category is called an equi join. Just we need to concentrate on the condition is equal to [=] between the columns in the table.

Example:

Select a.Employee_name,b.Department_name from Employee a,Employee b where a.Department_ID=b.Department_ID

How do we avoid getting duplicate entries in a query?

The SELECT DISTINCT is used to get distinct data from tables using a query. The below SQL query selects only the DISTINCT values from the “Country” column in the “Customers” table:

SELECT DISTINCT Country FROM Customers;

How can you create an empty table from an existing table?

Lets take an example:

Select * into studentcopy from student where 1=2 

Here, we are copying the student table to another table with the same structure with no rows copied.

Write a Query to display odd records from student table?

SELECT * FROM [SELECT *, ROW_NUMBER[] OVER [ORDER BY student_no] AS RowID FROM student] WHERE row_id %2!=0

Explain Non-Equi Join with an example?

When two or more tables are joining without equal to condition, then that join is known as Non Equi Join. Any operator can be used here, that is ,!=,,Between.

Example:

Select b.Department_ID,b.Department_name from Employee a,Department b where a.Department_id  b.Department_ID;

How can you delete duplicate records in a table with no primary key?

By using the SET ROWCOUNT command. It limits the number of records affected by a command. Let’s take an example, if you have 2 duplicate rows, you would SET ROWCOUNT 1, execute DELETE command and then SET ROWCOUNT 0.

Difference between NVL and NVL2 functions?

Both the NVL[exp1, exp2] and NVL2[exp1, exp2, exp3] functions check the value exp1 to see if it is null. With the NVL[exp1, exp2] function, if exp1 is not null, then the value of exp1 is returned; otherwise, the value of exp2 is returned, but case to the same data type as that of exp1. With the NVL2[exp1, exp2, exp3] function, if exp1 is not null, then exp2 is returned; otherwise, the value of exp3 is returned.

What is the difference between clustered and non-clustered indexes?

  1. Clustered indexes can be read rapidly rather than non-clustered indexes. 
  2. Clustered indexes store data physically in the table or view whereas, non-clustered indexes do not store data in the table as it has separate structure from the data row.

What does this query says? GRANT privilege_name ON object_name TO {user_name|PUBLIC|role_name} [WITH GRANT OPTION];

The given syntax indicates that the user can grant access to another user too.

Where MyISAM table is stored?

Each MyISAM table is stored on disk in three files. 

  1. The “.frm” file stores the table definition. 
  2. The data file has a ‘.MYD’ [MYData] extension. 
  3. The index file has a ‘.MYI’ [MYIndex] extension. 

What does myisamchk do?

It compresses the MyISAM tables, which reduces their disk or memory usage.

What is ISAM?

ISAM is abbreviated as Indexed Sequential Access Method. It was developed by IBM to store and retrieve data on secondary storage systems like tapes.

What is Database White box testing?

White box testing includes: Database Consistency and ACID properties Database triggers and logical views Decision Coverage, Condition Coverage, and Statement Coverage Database Tables, Data Model, and Database Schema Referential integrity rules.

What are the different types of SQL sandbox?

There are 3 different types of SQL sandbox: 

  • Safe Access Sandbox: Here a user can perform SQL operations such as creating stored procedures, triggers etc. but cannot have access to the memory as well as cannot create files.
  •  External Access Sandbox: Users can access files without having the right to manipulate the memory allocation.
  • Unsafe Access Sandbox: This contains untrusted codes where a user can have access to memory.

What is Database Black Box Testing?

This testing involves:

  • Data Mapping
  • Data stored and retrieved
  • Use of Black Box testing techniques such as Equivalence Partitioning and Boundary Value Analysis [BVA].

Explain Right Outer Join with Example?

This join is usable, when user wants all the records from Right table [Second table] and only equal or matching records from First or left table. The unmatched records are considered as null records. Example: Select t1.col1,t2.col2….t ‘n’col ‘n.’. from table1 t1,table2 t2 where t1.col[+]=t2.col;

What is a Subquery?

A SubQuery is a SQL query nested into a larger query. Example: SELECT employeeID, firstName, lastName FROM employees WHERE departmentID IN [SELECT departmentID FROM departments WHERE locationID = 2000] ORDER BY firstName, lastName; 

SQL Interview Questions for Developers

How to find duplicate records in SQL?

There are multiple ways to find duplicate records in SQL. Let’s see how can we find duplicate records using group by:

SELECT 
    x, 
    y, 
    COUNT[*] occurrences
FROM z1
GROUP BY
    x, 
    y
HAVING 
    COUNT[*] > 1;

We can also find duplicates in the table using rank:

SELECT * FROM [ SELECT eid, ename, eage, Row_Number[] OVER[PARTITION BY ename, eage ORDER By ename] AS Rank FROM employees ] AS X WHERE Rank>1

What is Case WHEN in SQL?

If you have knowledge about other programming languages, then you’d have learnt about if-else statements. You can consider Case WHEN to be analogous to that.

In Case WHEN, there will be multiple conditions and we will choose something on the basis of these conditions.

Here is the syntax for CASE WHEN:

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    WHEN conditionN THEN resultN
    ELSE result
END;

We start off by giving the CASE keyword, then we follow it up by giving multiple WHEN, THEN statements.

How to find 2nd highest salary in SQL?

Below is the syntax to find 2nd highest salary in SQL:

SELECT name, MAX[salary]
  FROM employees
 WHERE salary < [SELECT MAX[salary]
                 FROM employees];

How to delete duplicate rows in SQL?

There are multiple ways to delete duplicate records in SQL.

Below is the code to delete duplicate records using rank:

alter table emp add  sid int identity[1,1]

    delete e
    from  emp e
    inner join
    [select *,
    RANK[] OVER [ PARTITION BY eid,ename ORDER BY id DESC ]rank
    From emp ]T on e.sid=t.sid
    where e.Rank>1

    alter table emp 
    drop  column sno

Below is the syntax to delete duplicate records using groupby and min:

alter table emp add  sno int identity[1,1]
	
	    delete E from emp E
	    left join
	    [select min[sno] sno From emp group by empid,ename ] T on E.sno=T.sno
	    where T.sno is null

	    alter table emp 
	    drop  column sno	

What is cursor in SQL?

Cursors in SQL are used to store database tables. There are two types of cursors:

  • Implicit Cursor
  • Explicit Cursor

Implicit Cursor:

These implicit cursors are default cursors which are automatically created. A user cannot create an implicit cursor.

Explicit Cursor:

Explicit cursors are user-defined cursors. This is the syntax to create explicit cursor:

DECLARE cursor_name CURSOR FOR SELECT * FROM table_name

We start off by giving by keyword DECLARE, then we give the name of the cursor, after that we give the keywords CURSOR FOR SELECT * FROM, finally, we give in the name of the table.

How to create a stored procedure using SQL Server?

If you have worked with other languages, then you would know about the concept of Functions. You can consider stored procedures in SQL to be analogous to functions in other languages. This means that we can store a SQL statement as a stored procedure and this stored procedure can be invoked whenever we want.

This is the syntax to create a stored procedure:

CREATE PROCEDURE procedure_name
AS
sql_statement
GO;

We start off by giving the keywords CREATE PROCEDURE, then we go ahead and give the name of this stored procedure. After that, we give the AS keyword and follow it up with the SQL query, which we want as a stored procedure. Finally, we give the GO keyword.

Once, we create the stored procedure, we can invoke it this way:

EXEC procedure_name;

We will give in the keyword EXEC and then give the name of the stored procedure.

Let’s look at an example of a stored procedure:

CREATE PROCEDURE employee_location @location nvarchar[20]
AS
SELECT * FROM employees WHERE location = @location
GO;

In the above command, we are creating a stored procedure which will help us to extract all the employees who belong to a particular location.

EXEC employee_location @location = 'Boston';

With this, we are extracting all the employees who belong to Boston.

How to create an index in SQL?

We can create an index using this command:

CREATE INDEX index_name
ON table_name [column1, column2, column3 ...];

We start off by giving the keywords CREATE INDEX and then we will follow it up with the name of the index, after that we will give the ON keyword. Then, we will give the name of the table on which we would want to create this index. Finally, in parenthesis, we will list out all the columns which will have the index. Let’s look at an example:

CREATE INDEX salary
ON Employees [Salary];

In the above example, we are creating an index called a salary on top of the ‘Salary’ column of the ‘Employees’ table.

Now, let’s see how can we create a unique index:

CREATE UNIQUE INDEX index_name
ON table_name [column1, column2,column3 ...];

We start off with the keywords CREATE UNIQUE INDEX, then give in the name of the index, after that, we will give the ON keyword and follow it up with the name of the table. Finally, in parenthesis, we will give the list of the columns which on which we would want this unique index.

How to change the column data type in SQL?

We can change the data type of the column using the alter table. This will be the command:

ALTER TABLE table_name
MODIFY COLUMN column_name datatype;

We start off by giving the keywords ALTER TABLE, then we will give in the name of the table. After that, we will give in the keywords MODIFY COLUMN. Going ahead, we will give in the name of the column for which we would want to change the datatype and finally we will give in the data type to which we would want to change.

Difference between SQL and NoSQL databases?

SQL stands for structured query language and is majorly used to query data from relational databases. When we talk about a SQL database, it will be a relational database. 

But when it comes to the NoSQL databases, we will be working with non-relational databases.

SQL Joins Interview Questions

How to change column name in SQL?

The command to change the name of a column is different in different RDBMS.

This is the command to change the name of a column in MYSQL:

ALTER TABLE Customer CHANGE Address Addr char[50];

IN MYSQL, we will start off by using the ALTER TABLE keywords, then we will give in the name of the table. After that, we will use the CHANGE keyword and give in the original name of the column, following which we will give the name to which we would want to rename our column.

This is the command to change the name of a column in ORACLE:

ALTER TABLE Customer RENAME COLUMN Address TO Addr;

In ORACLE, we will start off by using the ALTER TABLE keywords, then we will give in the name of the table. After that, we will use the RENAME COLUMN keywords and give in the original name of the column, following which we will give the TO keyword and finally give the name to which we would like to rename our column.

When it comes to SQL Server, it is not possible to rename the column with the help of ALTER TABLE command, we would have to use sp_rename.

What is a view in SQL?

A view is a database object that is created using a Select Query with complex logic, so views are said to be a logical representation of the physical data, i.e Views behave like a physical table and users can use them as database objects in any part of SQL queries.

Let’s look at the types of Views:

  • Simple View
  • Complex View
  • Inline View
  • Materialized View

Simple View:

Simple views are created with a select query written using a single table. Below is the command to create a simple view:

Create VIEW Simple_view as Select * from BANK_CUSTOMER ;

Complex View:

Create VIEW Complex_view as SELECT bc.customer_id , ba.bank_account From Bank_customer bc JOIN Bank_Account ba Where bc.customer_id = ba.customer_id And ba.balance > 300000

Inline View:

A subquery is also called an inline view if and only if it is called in FROM clause of a SELECT query.

SELECT * FROM [ SELECT bc.customer_id , ba.bank_account From Bank_customer bc JOIN Bank_Account ba Where bc.customer_id = ba.customer_id And ba.balance > 300000]

How to drop a column in SQL?

To drop a column in SQL, we will be using this command:

ALTER TABLE employees
DROP COLUMN gender;

We will start off by giving the keywords ALTER TABLE, then we will give the name of the table, following which we will give the keywords DROP COLUMN and finally give the name of the column which we would want to remove.

How to use BETWEEN in SQL?

The BETWEEN operator checks an attribute value within a range. Here is an example of BETWEEN operator:

SELECT * FROM employees WHERE salary between 10000 and 20000;

With this command, we will be able to extract all the records where the salary of the employee is between 10000 and 20000.

Advanced SQL Interview Questions

What are the subsets of SQL?

  • DDL [Data Definition Language]: Used to define the data structure it consists of the commands like CREATE, ALTER, DROP, etc. 
  • DML [Data Manipulation Language]: Used to manipulate already existing data in the database, commands like SELECT, UPDATE, INSERT 
  • DCL [Data Control Language]: Used to control access to data in the database, commands like GRANT, REVOKE.

Difference between CHAR and VARCHAR2 datatype in SQL?

CHAR is used to store fixed-length character strings, and VARCHAR2 is used to store variable-length character strings.

How to sort a column using a column alias?

By using the column alias in the ORDER BY instead of where clause for sorting

Difference between COALESCE[] & ISNULL[] ?

COALESCE[] accepts two or more parameters, one can apply 2 or as many parameters but it returns only the first non NULL parameter. 

ISNULL[] accepts only 2 parameters. 

The first parameter is checked for a NULL value, if it is NULL then the 2nd parameter is returned, otherwise, it returns the first parameter.

What is “Trigger” in SQL?

A trigger allows you to execute a batch of SQL code when an insert,update or delete command is run against a specific table as Trigger is said to be the set of actions that are performed whenever commands like insert, update or delete are given. 

Write a Query to display employee details along with age.

SELECT * DATEDIFF[yy, dob, getdate[]] AS 'Age' FROM employee

Write a Query to display employee details along with age?

SELECT SUM[salary] FROM employee

Write an SQL query to get the third maximum salary of an employee from a table named employee_table.

SELECT TOP 1 salary FROM [ SELECT TOP 3 salary FROM employee_table ORDER BY salary DESC ] AS emp ORDER BY salary ASC; 

What are aggregate and scalar functions?

Aggregate functions are used to evaluate mathematical calculations and return single values. This can be calculated from the columns in a table. Scalar functions return a single value based on input value. 

Example -. Aggregate – max[], count – Calculated with respect to numeric. Scalar – UCASE[], NOW[] – Calculated with respect to strings.

What is a deadlock?

It is an unwanted situation where two or more transactions are waiting indefinitely for one another to release the locks. 

Explain left outer join with example.

Left outer join is useful if you want all the records from the left table[first table] and only matching records from 2nd table. The unmatched records are null records. Example: Left outer join with “+” operator Select t1.col1,t2.col2….t ‘n’col ‘n.’. from table1 t1,table2 t2 where t1.col=t2.col[+];

What is SQL injection?

SQL injection is a code injection technique used to hack data-driven applications.

What is a UNION operator?

The UNION operator combines the results of two or more Select statements by removing duplicate rows. The columns and the data types must be the same in the SELECT statements.

Explain SQL Constraints.

SQL Constraints are used to specify the rules of data type in a table. They can be specified while creating and altering the table. The following are the constraints in SQL: NOT NULL CHECK DEFAULT UNIQUE PRIMARY KEY FOREIGN KEY

What is the ALIAS command?

This command provides another name to a table or a column. It can be used in the WHERE clause of a SQL query using the “as” keyword. 

What are Group Functions? Why do we need them?

Group functions work on a set of rows and return a single result per group. The popularly used group functions are AVG, MAX, MIN, SUM, VARIANCE, and COUNT.

How can dynamic SQL be executed?

  • By executing the query with parameters 
  • By using EXEC 
  • By using sp_executesql

What is the usage of NVL[] function?

This function is used to convert the NULL value to the other value.

Write a Query to display employee details belongs to ECE department?

SELECT EmpNo, EmpName, Salary FROM employee WHERE deptNo in [select deptNo from dept where deptName = ‘ECE’]

What are the main differences between #temp tables and @table variables and which one is preferred?

1. SQL server can create column statistics on #temp tables. 

2. Indexes can be created on #temp tables 

3. @table variables are stored in memory up to a certain threshold

What is CLAUSE?

SQL clause is defined to limit the result set by providing conditions to the query. This usually filters some rows from the whole set of records. Example – Query that has WHERE condition.

What is a recursive stored procedure?

A stored procedure calls by itself until it reaches some boundary condition. This recursive function or procedure helps programmers to use the same set of code any number of times.

What does the BCP command do?

The Bulk Copy is a utility or a tool that exports/imports data from a table into a file and vice versa. 

What is a Cross Join?

In SQL cross join, a combination of every row from the two tables is included in the result set. This is also called cross product set. For example, if table A has ten rows and table B has 20 rows, the result set will have 10 * 20 = 200 rows provided there is a NOWHERE clause in the SQL statement.

Which operator is used in query for pattern matching?

LIKE operator is used for pattern matching, and it can be used as- 1. % – Matches zero or more characters. 2. _[Underscore] – Matching exactly one character.

Write a SQL query to get the current date?

SELECT CURDATE[];

State the case manipulation functions in SQL?

  • LOWER: converts all the characters to lowercase.
  • UPPER: converts all the characters to uppercase. 
  • INITCAP: converts the initial character of each word to uppercase

How to add a column to an existing table?

ALTER TABLE Department ADD [Gender, M, F]

Define lock escalation?

A query first takes the lowest level lock possible with the smallest row level. When too many rows are locked, the lock is escalated to a range or page lock. If too many pages are locked, it may escalate to a table lock. 

How to store Videos inside SQL Server table?

By using FILESTREAM datatype, which was introduced in SQL Server 2008.

State the order of SQL SELECT?

The order of SQL SELECT clauses is: SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY. Only the SELECT and FROM clauses are mandatory.

What is the difference between IN and EXISTS?

IN: Works on List result set Doesn’t work on subqueries resulting in Virtual tables with multiple columns Compares every value in the result list.

Exists: Works on Virtual tables Is used with co-related queries Exits comparison when the match is found

How do you copy data from one table to another table?

INSERT INTO table2 [column1, column2, column3, …] SELECT column1, column2, column3, … FROM table1 WHERE condition;

List the ACID properties that make sure that the database transactions are processed

ACID [Atomicity, Consistency, Isolation, Durability] is a set of properties that guarantee that database transactions are processed reliably. 

What will be the output of the following Query, provided the employee table has 10 records? 

BEGIN TRAN TRUNCATE TABLE Employees ROLLBACK SELECT * FROM Employees

This query will return 10 records as TRUNCATE was executed in the transaction. TRUNCATE does not itself keep a log but BEGIN TRANSACTION keeps track of the TRUNCATE command.

What do you mean by Stored Procedures? How do we use it?

A stored procedure is a collection of SQL statements that can be used as a function to access the database. We can create these stored procedures earlier before using it and can execute them wherever required by applying some conditional logic to it. Stored procedures are also used to reduce network traffic and improve performance.

What does GRANT command do?

This command is used to provide database access to users other than the administrator in SQL privileges.

What does the First normal form do?

First Normal Form [1NF]: It removes all duplicate columns from the table. It creates a table for related data and identifies unique column values.

How to add e record to the table?

INSERT syntax is used to add a record to the table. INSERT into table_name VALUES [value1, value2..];

What are the different tables present in MySQL?

There are 5 tables present in MYSQL.

  • MyISAM 
  • Heap 
  • Merge 
  • INNO DB 
  • ISAM

What is BLOB and TEXT in MySQL?

BLOB stands for the large binary objects. It is used to hold a variable amount of data. TEXT is a case-insensitive BLOB. TEXT values are non-binary strings [character strings]. 

What is the use of mysql_close[]?

Mysql_close[] cannot be used to close the persistent connection. Though it can be used to close a connection opened by mysql_connect[].

Write a query to find out the data between ranges?

In day-to-day activities, the user needs to find out the data between some range. To achieve this user needs to use Between..and operator or Greater than and less than the operator. 

Query 1: Using Between..and operator
Select * from Employee where salary between 25000 and 50000;
Query 2: Using operators [Greater than and less than]
Select * from Employee where salary >= 25000 and salary 1 

Add a delete statement to delete the duplicate records.

Sample Query to find the duplicate records in a table-

[SELECT COL1, COUNT[*] AS DUPLICATE
FROM EMPLOYEE
GROUP BY COL1
HAVING COUNT[*] > 1]

How to uninstall SQL Server?

In Windows 10, go to the START menu and locate the SQL Server.

Right-click and select uninstall to uninstall the application.

How to check SQL Server version?

You can run the below query to view the current version of SQL Server that you are using.

How to rename column name in SQL Server?

From the Object Explorer window pane, go to the table where the column is present and choose Design. Under the Column Name, select the name you want to rename and enter the new name. Go to the File menu and click Save. 

What is the stored procedure in SQL Server?

A Stored Procedure is nothing but a frequently used SQL query. Queries such as a SELECT query, which would often be used to retrieve a set of information many times within a database, can be saved as a Stored Procedure. The Stored Procedure, when called, executes the SQL query saved within the Stored Procedure.

Syntax to create a Stored Proc:

CREATE PROCEDURE PROCEDURE_NAME
AS
SQL_QUERY [GIVE YOUR OFTEN USED QUERY HERE]
GO;

You can execute the Stored Proc by using the command Exec Procedure_Name;

How to create a database in SQL Server?

After installing the required version of SQL Server, it is easy to create new databases and maintain them. 

  1. Launch the SQL Server Management Studio
  2. In the Object Explorer window pane, right-click on Databases and select ‘New Database’
  3. Enter the Database Name and click on ‘Ok’.
  4. Voila! Your new database is ready for use.

What is an index in SQL Server?

Indexes are database objects which help in retrieving records quickly and more efficiently. Column indexes can be created on both Tables and Views. By declaring a Column as an index within a table/ view, the user can access those records quickly by executing the index. Indexes with more than one column are called Clustered indexes.

Syntax:

CREATE INDEX INDEX_NAME
ON TABLE_NAME[COL1, COL2];

The syntax to drop an Index is DROP INDEX INDEX_NAME;

Indexes are known to improve the efficiency of SQL Select queries. 

How to create the table in SQL Server?

Tables are the fundamental storage objects within a database. A table is usually made up of 

Rows and Columns. The below syntax can be used to create a new table with 3 columns.

CREATE TABLE TABLE_NAME[
COLUMN1 DATATYPE, 
COLUMN2 DATATYPE, 
COLUMN3 DATATYPE
];

Alternatively, you can right-click on Table in the Object Explorer window pane and select ‘New -> Table’.

You can also define the type of Primary/ Foreign/ Check constraint when creating a table.

How to connect to SQL Server?

  • Launch the SQL Server Management Studio from the START menu.
  • In the dialogue box shown below, select the Server Type as Database Engine and Server Name as the name of your laptop/ desktop system.
  • Select the appropriate Authentication type and click on the Connect button.
  • A secure connection would be established, and the list of the available Databases will be loaded in the Object Explorer window pane.

How to delete duplicate rows in SQL Server?

Select the duplicate records in a table HAVING COUNT[*]>1 

Add a delete statement to delete the duplicate records.

Sample Query to find the duplicate records in a table –

[SELECT COL1, COUNT[*] AS DUPLICATE
FROM EMPLOYEE
GROUP BY COL1
HAVING COUNT[*] > 1];

How to download SQL Server?

The Express and Developer versions [open-source versions] of the latest SQL Server release can be downloaded from the official Microsoft website. The link is given below for reference.
//www.microsoft.com/en-in/sql-server/sql-server-downloads

How to connect SQL Server management studio to the local database?

  • Launch the SQL Server Management Studio from the START menu.
  • In the dialogue box shown below, select the Server Type as Database Engine and Server Name as the name of your laptop/ desktop system and click on the Connect button.
  • Select the Authentication as ‘Windows Authentication.
  • A secure connection would be established, and the list of the available Databases will be loaded in the Object Explorer window pane.

How to download SQL Server 2014?

  • Both the Express and Developer versions [free editions] of SQL Server can be downloaded from the official Microsoft website. The link is given below for reference.
  • Click on the link below: //www.microsoft.com/en-in/sql-server/sql-server-downloads
  • Click on the search icon and type in – SQL Server 2014 download
  • Click on the result link to download and save SQL Server 2014.

How to uninstall SQL Server 2014?

From the START menu, type SQL Server. Right-click on the app and select uninstall to uninstall the application from your system. Restart the system, if required, for the changes to get affected. 

How to find server names in SQL Server?

Run the query SELECT @@version; to find the version and name of the SQL Server you are using. 

How to start SQL Server?

Launch the SQL Server Management Studio from the START menu. Login using Windows Authentication. In the Object Explorer window pane, you can view the list of databases and corresponding objects. 

What is the case when in SQL Server?

Case When statements in SQL are used to run through many conditions and to return a value when one such condition is met. If none of the conditions is met in the When statements, then the value mentioned in the Else statement is returned. 

Syntax:

CASE
WHEN CONDITION1 THEN RESULT1

WHEN CONDITION2 THEN RESULT2

ELSE
RESULT
END;

Sample query:

HOW MANY HEAD OFFICES/ BRANCHES ARE THERE IN CANADA

select 
sum [ 
case 
when region_id >=  5 AND region_id [SELECT AVG[Popularity] FROM cricket_1];

  Find player_id and player name that are common in the test match 1 and test match 2.

SELECT player_id , player_name FROM cricket_1
WHERE cricket_1.player_id IN [SELECT player_id FROM cricket_2];

Retrieve player_id, runs, and player_name from cricket_1 and cricket_2 table and display the player_id of the players where the runs are more than the average runs.

SELECT player_id , runs , player_name FROM cricket_1 WHERE  cricket_1.RUNS > [SELECT AVG[RUNS] FROM cricket_2];


Write a query to extract the player_id, runs and player_name from the table “cricket_1” where the runs are greater than 50.

SELECT player_id , runs , player_name FROM cricket_1 
WHERE cricket_1.Runs > 50 ;

Write a query to extract all the columns from cricket_1 where player_name starts with ‘y’ and ends with ‘v’.

SELECT * FROM cricket_1 WHERE player_name LIKE 'y%v';

Write a query to extract all the columns from cricket_1 where player_name does not end with ‘t’.

SELECT * FROM cricket_1 WHERE player_name NOT LIKE '%t';
 

# Dataset Used: cric_combined.csv

Write a MySQL query to create a new column PC_Ratio that contains the popularity to charisma ratio.

ALTER TABLE cric_combined
ADD COLUMN PC_Ratio float4;

UPDATE cric_combined SET PC_Ratio =  [Popularity / Charisma];

 Write a MySQL query to find the top 5 players having the highest popularity to charisma ratio

SELECT Player_Name , PC_Ratio  FROM cric_combined ORDER BY  PC_Ratio DESC LIMIT 5;

Write a MySQL query to find the player_ID and the name of the player that contains the character “D” in it.

SELECT Player_Id ,  Player_Name FROM cric_combined WHERE Player_Name LIKE '%d%'; 

Dataset Used: new_cricket.csv

Extract the Player_Id and Player_name of the players where the charisma value is null.

SELECT Player_Id , Player_Name FROM new_cricket WHERE Charisma  IS NULL;

Write a MySQL query to impute all the NULL values with 0.

SELECT IFNULL[Charisma, 0] FROM new_cricket;

Separate all Player_Id into single numeric ids [example PL1 =  1].

SELECT Player_Id, SUBSTR[Player_Id,3]
FROM  new_cricket;

Write a MySQL query to extract Player_Id, Player_Name and charisma where the charisma is greater than 25.

SELECT Player_Id , Player_Name , charisma FROM new_cricket WHERE charisma > 25;

# Dataset Used: churn1.csv

Write a query to count all the duplicate values from the column “Agreement” from the table churn1.

SELECT Agreement, COUNT[Agreement] FROM churn1 GROUP BY Agreement HAVING COUNT[Agreement] > 1;

Rename the table churn1 to “Churn_Details”.

RENAME TABLE churn1 TO Churn_Details;

Write a query to create a new column new_Amount that contains the sum of TotalAmount and MonthlyServiceCharges.

ALTER TABLE Churn_Details
ADD COLUMN new_Amount FLOAT;
UPDATE Churn_Details SET new_Amount = [TotalAmount + MonthlyServiceCharges];

SELECT new_Amount FROM CHURN_DETAILS;

 Rename column new_Amount to Amount.

ALTER TABLE Churn_Details CHANGE new_Amount Amount FLOAT;

SELECT AMOUNT FROM CHURN_DETAILS;

Drop the column “Amount” from the table “Churn_Details”.

ALTER TABLE Churn_Details DROP COLUMN Amount ;

Write a query to extract the customerID, InternetConnection and gender from the table “Churn_Details ” where the value of the column “InternetConnection” has ‘i’ at the second position.

SELECT customerID, InternetConnection,  gender FROM Churn_Details WHERE InternetConnection LIKE '_i%';


Find the records where the tenure is 6x, where x is any number.

SELECT * FROM Churn_Details WHERE tenure LIKE '6_';

Part 3

# DataBase = Property Price Train

Dataset used: Property_Price_Train_new


Write An MySQL Query To Print The First Three Characters Of  Exterior1st From Property_Price_Train_new Table.

Select substring[Exterior1st,1,3] from Property_Price_Train_new;


Write An MySQL Query To Print Brick_Veneer_Area Of Property_Price_Train_new Excluding Brick_Veneer_Type, “None” And “BrkCmn” From Property_Price_Train_new Table.

Select  Brick_Veneer_Area, Brick_Veneer_Type from Property_Price_Train_new  where Brick_Veneer_Type not in ['None','BrkCmn'];


Write An MySQL Query to print Remodel_Year , Exterior2nd of the Property_Price_Train_new Whose Exterior2nd Contains ‘H’.

Select Remodel_Year , Exterior2nd from Property_Price_Train_new where Exterior2nd like '%H%' ;

Write MySQL query to print details of the table Property_Price_Train_new whose Remodel_year from 1983 to 2006

select * from Property_Price_Train_new where Remodel_Year between 1983 and 2006;

Write MySQL query to print details of Property_Price_Train_new whose Brick_Veneer_Type ends with e and contains 4 alphabets.

Select * from Property_Price_Train_new where Brick_Veneer_Type like '____e';

Write MySQl query to print nearest largest integer value of column Garage_Area from Property_Price_Train_new

Select ceil[Garage_Area] from Property_Price_Train_new;

Fetch the 3 highest value of column Brick_Veneer_Area from Property_Price_Train_new table

Select Brick_Veneer_Area from Property_Price_Train_new order by Brick_Veneer_Area desc limit 2,1;

Rename column LowQualFinSF to Low_Qual_Fin_SF fom table Property_Price_Train_new

Alter table Property_Price_Train_new change LowQualFinSF Low_Qual_Fin_SF varchar[150];

Convert Underground_Full_Bathroom [1 and 0] values to true or false respectively.

# Eg. 1 – true ; 0 – false

SELECT CASE WHEN Underground_Full_Bathroom = 0 THEN 'false' ELSE 'true' END FROM Property_Price_Train_new;

Extract total Sale_Price for each year_sold column of Property_Price_Train_new table.

Select Year_Sold, sum[Sale_Price] from Property_Price_Train_new group by Year_Sold;

Extract all negative values from W_Deck_Area

Select W_Deck_Area from Property_Price_Train_new where W_Deck_Area < 0;


Write MySQL query to extract Year_Sold, Sale_Price whose price is greater than 100000.

Select Sale_Price , Year_Sold from Property_Price_Train_new group by Year_Sold having Sale_Price  >  100000;

Write MySQL query to extract Sale_Price and House_Condition from Property_Price_Train_new and Property_price_train_2 perform inner join. Rename the table as PPTN and PPTN2.

Select Sale_Price , House_Condition from Property_Price_Train_new AS PPTN inner join Property_price_train_2 AS PPT2 on PPTN.ID= PPTN2.ID;

Count all duplicate values of column Brick_Veneer_Type from tbale Property_Price_Train_new

Select Brick_Veneer_Type, count[Brick_Veneer_Type] from Property_Price_Train_new group by Brick_Veneer_Type having count[Brick_Veneer_Type] > 1;

# DATABASE Cricket

Find all the players from both matches.

SELECT * FROM cricket_1
UNION
SELECT * FROM cricket_2;

Perform right join on cricket_1 and cricket_2.

SELECT
    cric2.Player_Id, cric2.Player_Name, cric2.Runs, cric2.Charisma, cric1.Popularity
FROM
    cricket_1 AS cric1
        RIGHT JOIN
    cricket_2 AS cric2 ON cric1.Player_Id = cric2.Player_Id;

 Perform left join on cricket_1 and cricket_2

SELECT
 cric1.Player_Id, cric1.Player_Name, cric1.Runs, cric1.Popularity, cric2.Charisma
FROM
    cricket_1 AS cric1
        LEFT JOIN
    cricket_2 AS cric2 ON cric1.Player_Id = cric2.Player_Id;

Perform left join on cricket_1 and cricket_2.

SELECT
    cric1.Player_Id, cric1.Player_Name, cric1.Runs, cric1.Popularity, cric2.Charisma
FROM
    cricket_1 AS cric1
        INNER JOIN
    cricket_2 AS cric2 ON cric1.Player_Id = cric2.Player_Id;

Create a new table and insert the result obtained after performing inner join on the two tables cricket_1 and cricket_2.

CREATE TABLE Players1And2 AS
SELECT
    cric1.Player_Id, cric1.Player_Name, cric1.Runs, cric1.Popularity, cric2.Charisma
FROM
    cricket_1 AS cric1
        INNER JOIN
    cricket_2 AS cric2 ON cric1.Player_Id = cric2.Player_Id;

Write MySQL query to extract maximum runs of players get only top two players

select Player_Name, Runs from cricket_1 group by Player_Name having max[Runs] limit 2;

PART 4

# Pre-Requisites

# Assuming Candidates are familiar with “Group by” and “Grouping functions” because these are used along with JOINS in the questionnaire. 

# Create below DB objects 

CREATE TABLE BANK_CUSTOMER [ customer_id INT ,
             	customer_name VARCHAR[20],
             	Address 	VARCHAR[20],
             	state_code  VARCHAR[3] ,    	 
             	Telephone   VARCHAR[10]	];
INSERT INTO BANK_CUSTOMER VALUES [123001,"Oliver", "225-5, Emeryville", "CA" , "1897614500"];
INSERT INTO BANK_CUSTOMER VALUES [123002,"George", "194-6,New brighton","MN" , "1897617000"];
INSERT INTO BANK_CUSTOMER VALUES [123003,"Harry", "2909-5,walnut creek","CA" , "1897617866"];
INSERT INTO BANK_CUSTOMER VALUES [123004,"Jack", "229-5, Concord",  	"CA" , "1897627999"];
INSERT INTO BANK_CUSTOMER VALUES [123005,"Jacob", "325-7, Mission Dist","SFO", "1897637000"];
INSERT INTO BANK_CUSTOMER VALUES [123006,"Noah", "275-9, saint-paul" ,  "MN" , "1897613200"];
INSERT INTO BANK_CUSTOMER VALUES [123007,"Charlie","125-1,Richfield",   "MN" , "1897617666"];
INSERT INTO BANK_CUSTOMER VALUES [123008,"Robin","3005-1,Heathrow", 	"NY" , "1897614000"];

CREATE TABLE BANK_CUSTOMER_EXPORT [ customer_id CHAR[10],
customer_name CHAR[20],
Address CHAR[20],
state_code  CHAR[3] ,    	 
Telephone  CHAR[10]];
    
INSERT INTO BANK_CUSTOMER_EXPORT VALUES ["123001 ","Oliver", "225-5, Emeryville", "CA" , "1897614500"] ;
INSERT INTO BANK_CUSTOMER_EXPORT VALUES ["123002 ","George", "194-6,New brighton","MN" , "189761700"];
CREATE TABLE Bank_Account_Details[Customer_id INT,           	 
                             	Account_Number VARCHAR[19],
                              	Account_type VARCHAR[25],
                           	    Balance_amount INT,
                               	Account_status VARCHAR[10],             	 
                               	Relationship_type varchar[1] ] ;
INSERT INTO Bank_Account_Details  VALUES [123001, "4000-1956-3456",  "SAVINGS" , 200000 ,"ACTIVE","P"];
INSERT INTO Bank_Account_Details  VALUES [123001, "5000-1700-3456", "RECURRING DEPOSITS" ,9400000 ,"ACTIVE","S"];  
INSERT INTO Bank_Account_Details  VALUES [123002, "4000-1956-2001",  "SAVINGS", 400000 ,"ACTIVE","P"];
INSERT INTO Bank_Account_Details  VALUES [123002, "5000-1700-5001",  "RECURRING DEPOSITS" ,7500000 ,"ACTIVE","S"];
INSERT INTO Bank_Account_Details  VALUES [123003, "4000-1956-2900",  "SAVINGS" ,750000,"INACTIVE","P"];
INSERT INTO Bank_Account_Details  VALUES [123004, "5000-1700-6091", "RECURRING DEPOSITS" ,7500000 ,"ACTIVE","S"];
INSERT INTO Bank_Account_Details  VALUES [123004, "4000-1956-3401",  "SAVINGS" , 655000 ,"ACTIVE","P"];
INSERT INTO Bank_Account_Details  VALUES [123005, "4000-1956-5102",  "SAVINGS" , 300000 ,"ACTIVE","P"];
INSERT INTO Bank_Account_Details  VALUES [123006, "4000-1956-5698",  "SAVINGS" , 455000 ,"ACTIVE" ,"P"];
INSERT INTO Bank_Account_Details  VALUES [123007, "5000-1700-9800",  "SAVINGS" , 355000 ,"ACTIVE" ,"P"];
INSERT INTO Bank_Account_Details  VALUES [123007, "4000-1956-9977",  "RECURRING DEPOSITS" , 7025000,"ACTIVE" ,"S"];
INSERT INTO Bank_Account_Details  VALUES [123007, "9000-1700-7777-4321",  "Credit Card"	,0  ,"INACTIVE", "P"];
INSERT INTO Bank_Account_Details  VALUES [123007, '5900-1900-9877-5543', "Add-on Credit Card" ,   0   ,"ACTIVE", "S"];
INSERT INTO Bank_Account_Details  VALUES [123008, "5000-1700-7755",  "SAVINGS"   	,0   	,"INACTIVE","P"];
INSERT INTO Bank_Account_Details  VALUES [123006, '5800-1700-9800-7755', "Credit Card"   ,0   	,"ACTIVE", "P"];
INSERT INTO Bank_Account_Details  VALUES [123006, '5890-1970-7706-8912', "Add-on Credit Card"   ,0   	,"ACTIVE", "S"];

# CREATE Bank_Account Table:
# Create Table
CREATE TABLE BANK_ACCOUNT [ Customer_id INT, 		   			  
	                Account_Number VARCHAR[19],
		     Account_type VARCHAR[25],
		     Balance_amount INT ,
			Account_status VARCHAR[10], Relation_ship varchar[1] ] ;
# Insert records:
INSERT INTO BANK_ACCOUNT  VALUES [123001, "4000-1956-3456",  "SAVINGS"            , 200000 ,"ACTIVE","P"]; 
INSERT INTO BANK_ACCOUNT  VALUES [123001, "5000-1700-3456",  "RECURRING DEPOSITS" ,9400000 ,"ACTIVE","S"];  
INSERT INTO BANK_ACCOUNT  VALUES [123002, "4000-1956-2001",  "SAVINGS"            , 400000 ,"ACTIVE","P"]; 
INSERT INTO BANK_ACCOUNT  VALUES [123002, "5000-1700-5001",  "RECURRING DEPOSITS" ,7500000 ,"ACTIVE","S"]; 
INSERT INTO BANK_ACCOUNT  VALUES [123003, "4000-1956-2900",  "SAVINGS"            ,750000,"INACTIVE","P"]; 
INSERT INTO BANK_ACCOUNT  VALUES [123004, "5000-1700-6091",  "RECURRING DEPOSITS" ,7500000 ,"ACTIVE","S"]; 
INSERT INTO BANK_ACCOUNT  VALUES [123004, "4000-1956-3401",  "SAVINGS"            , 655000 ,"ACTIVE","P"]; 
INSERT INTO BANK_ACCOUNT  VALUES [123005, "4000-1956-5102",  "SAVINGS"            , 300000 ,"ACTIVE","P"]; 
INSERT INTO BANK_ACCOUNT  VALUES [123006, "4000-1956-5698",  "SAVINGS"            , 455000 ,"ACTIVE" ,"P"]; 
INSERT INTO BANK_ACCOUNT  VALUES [123007, "5000-1700-9800",  "SAVINGS"            , 355000 ,"ACTIVE" ,"P"]; 
INSERT INTO BANK_ACCOUNT  VALUES [123007, "4000-1956-9977",  "RECURRING DEPOSITS" , 7025000,"ACTIVE" ,"S"]; 
INSERT INTO BANK_ACCOUNT  VALUES [123007, "9000-1700-7777-4321",  "CREDITCARD"    ,0      ,"INACTIVE","P"]; 
INSERT INTO BANK_ACCOUNT  VALUES [123008, "5000-1700-7755",  "SAVINGS"            ,NULL   ,"INACTIVE","P"]; 




# CREATE TABLE Bank_Account_Relationship_Details

CREATE TABLE Bank_Account_Relationship_Details
                             	[ Customer_id INT,
								Account_Number VARCHAR[19],
                            	Account_type VARCHAR[25],
                             	Linking_Account_Number VARCHAR[19]];
INSERT INTO Bank_Account_Relationship_Details  VALUES [123001, "4000-1956-3456",  "SAVINGS" , ""];
INSERT INTO Bank_Account_Relationship_Details  VALUES [123001, "5000-1700-3456",  "RECURRING DEPOSITS" , "4000-1956-3456"];  
INSERT INTO Bank_Account_Relationship_Details  VALUES [123002, "4000-1956-2001",  "SAVINGS" , "" ];
INSERT INTO Bank_Account_Relationship_Details  VALUES [123002, "5000-1700-5001",  "RECURRING DEPOSITS" , "4000-1956-2001" ];
INSERT INTO Bank_Account_Relationship_Details  VALUES [123003, "4000-1956-2900",  "SAVINGS" , "" ];
INSERT INTO Bank_Account_Relationship_Details  VALUES [123004, "5000-1700-6091",  "RECURRING DEPOSITS" , "4000-1956-2900" ];
INSERT INTO Bank_Account_Relationship_Details  VALUES [123004, "5000-1700-7791",  "RECURRING DEPOSITS" , "4000-1956-2900" ];
INSERT INTO Bank_Account_Relationship_Details  VALUES [123007, "5000-1700-9800",  "SAVINGS" , "" ];
INSERT INTO Bank_Account_Relationship_Details  VALUES [123007, "4000-1956-9977",  "RECURRING DEPOSITS" , "5000-1700-9800" ];
INSERT INTO Bank_Account_Relationship_Details  VALUES [NULL, "9000-1700-7777-4321",  "Credit Card" , "5000-1700-9800" ];
INSERT INTO Bank_Account_Relationship_Details  VALUES [NULL, '5900-1900-9877-5543', 'Add-on Credit Card', '9000-1700-7777-4321' ];
INSERT INTO Bank_Account_Relationship_Details  VALUES [NULL, '5800-1700-9800-7755', 'Credit Card', '4000-1956-5698' ];
INSERT INTO Bank_Account_Relationship_Details  VALUES [NULL, '5890-1970-7706-8912', 'Add-on Credit Card', '5800-1700-9800-7755' ];



# CREATE TABLE BANK_ACCOUNT_TRANSACTION

CREATE TABLE BANK_ACCOUNT_TRANSACTION [  
              	Account_Number VARCHAR[19],
              	Transaction_amount Decimal[18,2] ,
              	Transcation_channel VARCHAR[18] ,
             	Province varchar[3] ,
             	Transaction_Date Date] ;


INSERT INTO BANK_ACCOUNT_TRANSACTION VALUES [ "4000-1956-3456",  -2000, "ATM withdrawl" , "CA", "2020-01-13"];
INSERT INTO BANK_ACCOUNT_TRANSACTION VALUES [ "4000-1956-2001",  -4000, "POS-Walmart"   , "MN", "2020-02-14"];
INSERT INTO BANK_ACCOUNT_TRANSACTION VALUES [ "4000-1956-2001",  -1600, "UPI transfer"  , "MN", "2020-01-19"];
INSERT INTO BANK_ACCOUNT_TRANSACTION VALUES [ "4000-1956-2001",  -6000, "Bankers cheque", "CA", "2020-03-23"];
INSERT INTO BANK_ACCOUNT_TRANSACTION VALUES [ "4000-1956-2001",  -3000, "Net banking"   , "CA", "2020-04-24"];
INSERT INTO BANK_ACCOUNT_TRANSACTION VALUES [ "4000-1956-2001",  23000, "cheque deposit", "MN", "2020-03-15"];
INSERT INTO BANK_ACCOUNT_TRANSACTION VALUES [ "5000-1700-6091",  40000, "ECS transfer"  , "NY", "2020-02-19"];
INSERT INTO BANK_ACCOUNT_TRANSACTION VALUES [ "5000-1700-7791",  40000, "ECS transfer"  , "NY", "2020-02-19"];
INSERT INTO BANK_ACCOUNT_TRANSACTION VALUES [ "4000-1956-3401",   8000, "Cash Deposit"  , "NY", "2020-01-19"];
INSERT INTO BANK_ACCOUNT_TRANSACTION VALUES [ "4000-1956-5102",  -6500, "ATM withdrawal" , "NY", "2020-03-14"];
INSERT INTO BANK_ACCOUNT_TRANSACTION VALUES [ "4000-1956-5698",  -9000, "Cash Deposit"  , "NY", "2020-03-27"];
INSERT INTO BANK_ACCOUNT_TRANSACTION VALUES [ "4000-1956-9977",  50000, "ECS transfer"  , "NY", "2020-01-16"];
INSERT INTO BANK_ACCOUNT_TRANSACTION VALUES [ "9000-1700-7777-4321",  -5000, "POS-Walmart", "NY", "2020-02-17"];
INSERT INTO BANK_ACCOUNT_TRANSACTION VALUES [ "9000-1700-7777-4321",  -8000, "Shopping Cart", "MN", "2020-03-13"];
INSERT INTO BANK_ACCOUNT_TRANSACTION VALUES [ "9000-1700-7777-4321",  -2500, "Shopping Cart", "MN", "2020-04-21"];
INSERT INTO BANK_ACCOUNT_TRANSACTION VALUES [ "5800-1700-9800-7755", -9000, "POS-Walmart","MN", "2020-04-13"];
INSERT INTO BANK_ACCOUNT_TRANSACTION VALUES [ '5890-1970-7706-8912', -11000, "Shopping Cart" , "NY" , "2020-03-12"] ;



# CREATE TABLE BANK_CUSTOMER_MESSAGES

CREATE TABLE BANK_CUSTOMER_MESSAGES [  
              	Event VARCHAR[24],
              	Customer_message VARCHAR[75],
              	Notice_delivery_mode VARCHAR[15]] ;


INSERT INTO BANK_CUSTOMER_MESSAGES VALUES [ "Adhoc", "All Banks are closed due to announcement of National strike", "mobile" ] ;
INSERT INTO BANK_CUSTOMER_MESSAGES VALUES [ "Transaction Limit", "Only limited withdrawals per card are allowed from ATM machines", "mobile" ];
INSERT INTO `bank_account_transaction`[`Account_Number`, `Transaction_amount`, `Transcation_channel`, `Province`, `Transaction_Date`] VALUES
['4000-1956-9977' ,    10000.00     ,'ECS transfer',     'MN' ,    '2020-02-16' ] ;

-- inserted for queries after 17th  
INSERT INTO `bank_account_transaction`[`Account_Number`, `Transaction_amount`, `Transcation_channel`, `Province`, `Transaction_Date`] VALUES
['4000-1956-9977' ,    40000.00     ,'ECS transfer',     'MN' ,    '2020-03-18' ] ;

INSERT INTO `bank_account_transaction`[`Account_Number`, `Transaction_amount`, `Transcation_channel`, `Province`, `Transaction_Date`] VALUES
['4000-1956-9977' ,    60000.00     ,'ECS transfer',     'MN' ,    '2020-04-18' ] ;

INSERT INTO `bank_account_transaction`[`Account_Number`, `Transaction_amount`, `Transcation_channel`, `Province`, `Transaction_Date`] VALUES
['4000-1956-9977' ,    20000.00     ,'ECS transfer',     'MN' ,    '2020-03-20' ] ;

-- inserted for queries after 24th 

INSERT INTO `bank_account_transaction`[`Account_Number`, `Transaction_amount`, `Transcation_channel`, `Province`, `Transaction_Date`] VALUES
['4000-1956-9977' ,    49000.00     ,'ECS transfer',     'MN' ,    '2020-06-18' ] ;




# CREATE TABLE BANK_INTEREST_RATE

CREATE TABLE BANK_INTEREST_RATE[  
            	account_type varchar[24],
              	interest_rate decimal[4,2],
            	month varchar[2],
            	year  varchar[4]
             	]	;

INSERT  INTO BANK_INTEREST_RATE VALUES [ "SAVINGS" , 0.04 , '02' , '2020' ];
INSERT  INTO BANK_INTEREST_RATE VALUES [ "RECURRING DEPOSITS" , 0.07, '02' , '2020' ];
INSERT  INTO BANK_INTEREST_RATE VALUES   [ "PRIVILEGED_INTEREST_RATE" , 0.08 , '02' , '2020' ];


# Bank_holidays:

Insert into bank_holidays values[ '2020-05-20', now[], now[] ] ;

Insert into bank_holidays values[ '2020-03-13' , now[], now[] ] ;


Print customer Id, customer name and average account_balance maintained by each customer for all of his/her accounts in the bank.

Select bc.customer_id , customer_name, avg[ba.Balance_amount] as All_account_balance_amount
from bank_customer bc
inner join
Bank_Account_Details ba
on bc.customer_id = ba.Customer_id
group by bc.customer_id, bc.customer_name;

Print customer_id , account_number and balance_amount , 

#condition that if balance_amount is nil then assign transaction_amount  for account_type = “Credit Card”

Select customer_id , ba.account_number,
Case when ifnull[balance_amount,0] = 0 then   Transaction_amount else balance_amount end  as balance_amount
from Bank_Account_Details ba  
inner join
bank_account_transaction bat
on ba.account_number = bat.account_number
and account_type = "Credit Card";


Print customer_id , account_number and balance_amount , 

# conPrint account number,  balance_amount, transaction_amount from Bank_Account_Details and bank_account_transaction 

# for all the transactions occurred during march,2020 and april, 2020

Select
ba.Account_Number, Balance_amount, Transaction_amount, Transaction_Date
from Bank_Account_Details ba  
inner join
bank_account_transaction bat
on ba.account_number = bat.account_number
And [ Transaction_Date between "2020-03-01" and "2020-04-30"];
-- or use below condition --  
# [date_format[Transaction_Date , '%Y-%m']  between "2020-03" and "2020-04"]; 

Print all of the customer id, account number,  balance_amount, transaction_amount from bank_customer, 

# Bank_Account_Details and bank_account_transaction tables where excluding all of their transactions in march, 2020  month 

Select
ba.Customer_id,
ba.Account_Number, Balance_amount, Transaction_amount, Transaction_Date
from Bank_Account_Details ba  
Left join bank_account_transaction bat
on ba.account_number = bat.account_number
And NOT [ date_format[Transaction_Date , '%Y-%m'] = "2020-03" ];

Print only the customer id, customer name, account_number, balance_amount who did transactions during the first quarter. 

# Do not display the accounts if they have not done any transactions in the first quarter.

Select
ba.Customer_id,
ba.Account_Number, Balance_amount , transaction_amount , transaction_date from
Bank_Account_Details ba  
Inner join bank_account_transaction bat
on ba.account_number = bat.account_number
And [ date_format[Transaction_Date , '%Y-%m'] 

Bài Viết Liên Quan

Chủ Đề