Find the Nth Highest Salary Without Using of Top Keyword
select max(empsal) from emp e1
where N <= (Select count(distinct empsal) from emp e2
where e1.empsal <= e2.empsal)
Write SQL for Creating Duplicate Table
Select * into emp2 from emp
>>emp2 is new table ; emp is existing table
Write SQL for Copying Data from One Table to Another Table
insert into emp3 select * from emp
>> emp3 is empty existing table
Delete the Duplicate Data from Below Table “SalesHistory”
Product SaleDate SalePrice
Computer 1919-03-18 00:00:00.000 1008.00
BigScreen 1927-03-18 00:00:00.000 91.00
PoolTable 1927-04-01 00:00:00.000 139.00
Computer 1919-03-18 00:00:00.000 1008.00
BigScreen 1927-03-25 00:00:00.000 92.00
PoolTable 1927-03-25 00:00:00.000 108.00
Computer 1919-04-01 00:00:00.000 150.00
BigScreen 1927-04-01 00:00:00.000 123.00
PoolTable 1927-04-01 00:00:00.000 139.00
Computer 1919-04-08 00:00:00.000 168.00
The new CTE feature in SQL Server 2005 makes it very easy to remove these duplicates, with or without a primary key.
The script below defines my CTE. I am using a windowing function named DENSE_RANK
to group the records together based on the Product
, SaleDate
, and SalePrice
fields, and assign them a sequential value randomly. This means that if I have two records with the exact same Product
, SaleDate
, and SalePrice
values, the first record will be ranked as 1
, the second as 2
, and so on.
;WITH SalesCTE(Product, SaleDate, SalePrice, Ranking)
AS
(
SELECT
Product, SaleDate, SalePrice,
Ranking = DENSE_RANK() OVER(PARTITION BY Product, SaleDate, SalePrice ORDER BY NEWID() ASC)
FROM SalesHistory
)
DELETE FROM SalesCTE
WHERE Ranking > 1
What is CTE?
Common Table Expressions, or CTE, are a new construct introduced in Microsoft SQL Server 2005 that offers a more readable form of the derived table that can be declared once and referenced multiple times in a query. Moreover, CTEs can be recursively defined, allowing a recursive entity to be enumerated without the need for recursive-stored procedures.
What are the Basic Functions for master, msdb, model, tempdb databases?
The Master
database holds information for all databases located on the SQL Server instance and is the glue that holds the engine together. Because SQL Server cannot start without a functioning master database, you must administer this database with care.
The msdb
database stores information regarding database backups, SQL Agent information, DTS packages, SQL Server jobs, and some replication information such as for log shipping.
The tempdb
holds temporary objects such as global and local temporary tables and stored procedures.
The model
is essentially a template database used in the creation of any new user database created in the instance.
What is De-normalization?
De-normalization is the process of attempting to optimize the performance of a database by adding redundant data. It is sometimes necessary because current DBMSs implement the relational model poorly. A true relational DBMS would allow for a fully normalized database at the logical level, while providing physical storage of data that is tuned for high performance. De-normalization is a technique to move from higher to lower normal forms of database modeling in order to speed up database access.
What is an Execution Plan? When Would You Use It? How Would You View the Execution Plan?
An execution plan is basically a road map that graphically or textually shows the data retrieval methods chosen by the SQL Server query optimizer for a stored procedure or ad-hoc query and is a very useful tool for a developer to understand the performance characteristics of a query or stored procedure since the plan is the one that SQL Server will place in its cache and use to execute the stored procedure or query. From within Query Analyzer is an option called “Show Execution Plan” (located on the Query drop-down menu). If this option is turned on, it will display query execution plan in a separate window when query is run again.
What is SQL Profiler?
SQL Profiler is a graphical tool that allows system administrators to monitor events in an instance of Microsoft SQL Server. You can capture and save data about each event to a file or SQL Server table to analyze later. For example, you can monitor a production environment to see which stored procedures are hampering performance by executing too slowly.
Use SQL Profiler to monitor only the events in which you are interested. If traces are becoming too large, you can filter them based on the information you want, so that only a subset of the event data is collected. Monitoring too many events adds overhead to the server and the monitoring process and can cause the trace file or trace table to grow very large, especially when the monitoring process takes place over a long period of time.
What is User Defined Functions?
User-Defined Functions allow to define their own T-SQL functions that can accept 0
or more parameters and return a single scalar data value or a table data type.
What Kind of User-Defined Functions Can Be Created?
There are three types of User-Defined functions in SQL Server 2000 and they are Scalar, Inline Table-Valued and Multi-statement Table-valued.
What is the Difference between a Local and a Global Variable?
A local temporary table exists only for the duration of a connection or, if defined inside a compound statement, for the duration of the compound statement.
A global temporary table remains in the database permanently, but the rows exist only within a given connection. When connection are closed, the data in the global temporary table disappears. However, the table definition remains with the database for access when database is opened next time.
What is Log Shipping?
Log shipping is the process of automating the backup of database and transaction log files on a production SQL server, and then restoring them onto a standby server. Enterprise Editions only supports log shipping. In log shipping, the transactional log file from one server is automatically updated into the backup database on the other server. If one server fails, the other server will have the same db can be used this as the Disaster Recovery plan. The key feature of log shipping is that is will automatically backup transaction logs throughout the day and automatically restore them on the standby server at defined interval.
Can a Stored Procedure Call Itself or Recursive Stored Procedure? How Many Level SP Nesting is Possible?
Yes. Because Transact-SQL supports recursion, you can write stored procedures that call themselves. Recursion can be defined as a method of problem solving wherein the solution is arrived at by repetitively applying it to subsets of the problem. A common application of recursive logic is to perform numeric computations that lend themselves to repetitive evaluation by the same processing steps. Stored procedures are nested when one stored procedure calls another or executes managed code by referencing a CLR routine, type, or aggregate. You can nest stored procedures and managed code references up to 32 levels.
What is @@ERROR?
The @@ERROR
automatic variable returns the error code of the last Transact-SQL statement. If there was no error, @@ERROR
returns zero. Because @@ERROR
is reset after each Transact-SQL statement, it must be saved to a variable if it is needed to process it further after checking it.
What is Raiseerror?
Stored procedures report errors to client applications via the RAISERROR
command. RAISERROR
doesn’t change the flow of a procedure; it merely displays an error message, sets the @@ERROR
automatic variable, and optionally writes the message to the SQL Server error log and the NT application event log.
What is the Difference between DELETE & TRUNCATE Commands?
Delete
command removes the rows from a table based on the condition that we provide with a WHERE
clause. Truncate will actually remove all the rows from a table and there will be no data in the table after we run the truncate
command.
TRUNCATE
TRUNCATE
is faster and uses fewer system and transaction log resources than DELETE
. TRUNCATE
removes the data by deallocating the data pages used to store the table’s data, and only the page deallocations are recorded in the transaction log. TRUNCATE
removes all rows from a table, but the table structure and its columns, constraints, indexes and so on remain. The counter used by an identity for new rows is reset to the seed for the column. - You cannot use
TRUNCATE TABLE
on a table referenced by a FOREIGN KEY
constraint. - Because
TRUNCATE TABLE
is not logged, it cannot activate a trigger. TRUNCATE
can not be Rolled back using logs. TRUNCATE
is DDL Command. TRUNCATE
resets identity of the table.
DELETE
DELETE
removes rows one at a time and records an entry in the transaction log for each deleted row. - If you want to retain the identity counter, use
DELETE
instead. If you want to remove table definition and its data, use the DROP TABLE
statement. DELETE
can be used with or without a WHERE
clause DELETE
activates Triggers. DELETE
can be Rolled back using logs. DELETE
is DML Command. DELETE
does not reset identity of the table.
Difference between Function and Stored Procedure?
UDF can be used in the SQL statements anywhere in the WHERE
/HAVING
/SELECT
section whereas Stored procedures cannot be.
UDFs that return tables can be treated as another rowset. This can be used in JOIN
s with other tables.
Inline UDFs can be thought of as views that take parameters and can be used in JOIN
s and other Rowset
operations.
When is the Use of UPDATE_STATISTICS Command?
This command is basically used when a large processing of data has occurred. If a large amount of deletions any modification or Bulk Copy into the tables has occurred, it has to update the indexes to take these changes into account. UPDATE_STATISTICS
updates the indexes on these tables accordingly.
What is the Difference Between a HAVING CLAUSE and a WHERE CLAUSE?
Specifies a search condition for a group or an aggregate. HAVING
can be used only with the SELECT
statement. HAVING
is typically used in a GROUP BY
clause. When GROUP BY
is not used, HAVING
behaves like a WHERE
clause. Having
Clause is basically used only with the GROUP BY
function in a query. WHERE
Clause is applied to each row before they are part of the GROUP BY
function in a query. HAVING
criteria is applied after the grouping of rows has occurred.
What is a Linked Server?
Linked Servers is a concept in SQL Server by which we can add other SQL Server to a Group and query both the SQL Server dbs using T-SQL Statements. With a linked server, you can create very clean, easy to follow, SQL statements that allow remote data to be retrieved, joined and combined with local data.
Stored Procedure sp_addlinkedserver
, sp_addlinkedsrvlogin
will be used add new Linked Server.
What is Collation?
Collation refers to a set of rules that determine how data is sorted and compared. Character data is sorted using rules that define the correct character sequence, with options for specifying case-sensitivity, accent marks, kana character types and character width.
What’s the Difference Between a Primary Key and a Unique Key?
Both primary key and unique enforce uniqueness of the column on which they are defined. But by default, primary key creates a clustered index on the column, where as unique creates a nonclustered index by default. Another major difference is that, primary key doesn’t allow NULL
s, but unique key allows one NULL
only.
CodeProject