• Home
  • SQL Server
    • Articles
    • T-SQL Puzzles
    • Output Puzzles
    • Interview Questions
    • Performance Tuning
    • SQL SERVER On Linux
    • Resources
  • SSRS
    • SSRS Articles
    • Interview Questions
  • SSAS
    • SSAS Articles
    • DAX
  • SQL Puzzles
  • Interview Questions
    • SQL Interview Questions
    • Data Interview Questions
  • Python Interview Puzzles
  • New Features(SQL SERVER)
    • SQL SERVER 2017
    • SQL SERVER 2016
    • SQL SERVER On Linux
  • Social
    • Expert Exchange
      • Top Expert in SQL
      • Yearly Award
      • Certifications
      • Achievement List
      • Top Expert of the Week
    • HackerRank (SQL)
    • StackOverflow
    • About Me
      • Contact Me
      • Blog Rules

Improving my SQL BI Skills

Improving my SQL BI Skills

Tag Archives: Interview questions

SQL SERVER | Nested Transactions – Rollback or Commit Confusions

12 Tuesday May 2015

Posted by Pawan Kumar Khowal in SQL Concepts, SQL SERVER, SQL Server Interview Questions

≈ 1 Comment

Tags

I have opened a nested transaction inside an outer transaction, Interview Qs.SQL SERVER Questions, Interview questions, Interview Questions on SQL, InterviewQuestions, InterviewQuestions for SQL, Joins, Joins Interview questions, Joins Puzzle, Objective Puzzle, Puzzles, QL SERVER Interview questions, Queries for SQL Interview, SELECT Puzzle, SQL, SQL 2012, SQL 2014, SQL 2014 Interview Questions, SQL interview questions on Transactions, SQL nested transactions, SQL SERVER Interview questions, SQL SERVER | Nested Transactions - Rollback or Commit Confusions, SQL Skills, SQL Transactions, SQLSERVER, T SQL Puzzles, TSQL, TSQL Interview questions, TSQL Queries, What happens when a rollback happens in inside a nested stored procedure?


SQL SERVER | Nested Transactions – Rollback or Commit

This is one the frequent question asked in MSBI interviews. They normally asked like I have opened a nested transaction inside an outer transaction, if i do rollback which transaction will be undone?. Here there could be two scenarion like Rollback in the inner transaction or roll back in the outer transaction. We will try out both the options.

To clarify this lets create a table and then we will create nested transactions and check their output.


--

/*Sample Data creation*/

CREATE TABLE TestTrnx
(
	Name VARCHAR(25)
)
GO

INSERT INTO TestTrnx(Name) VALUES ('Isha'), ('Zuzu') , ('Mayank')

--

Now lets create some Nested Transactions and check there outputs

Test 1 | Nested Transaction | Rollback in outer Transaction

--

/*   Test 1 | Nested Transaction | Rollback in OUTER TRANSACTION  */
/*   Here we inserting a row in the TestTrnx table                */

BEGIN TRAN
	BEGIN TRAN
		INSERT INTO TestTrnx(Name) VALUES ('Pawan')
	COMMIT
ROLLBACK

SELECT Name FROM TestTrnx

/*Output - This means if the outer transaction Rollbacked all the
inner transactions are also Roll backed */

--

Output of the above query is given below-

Case 1 - Nested Transaction - Rollback in Outer Transaction

Test 2 | Nested Transaction | Rollback in the inner Transaction

--

/*   Test 2 | Nested Transaction | COMMIT in OUTER TRANSACTION  */
/*   Here we inserting a row in the TestTrnx table                */
BEGIN TRAN
	BEGIN TRAN
		INSERT INTO TestTrnx(Name) VALUES ('Pawan')
	ROLLBACK
COMMIT

SELECT Name FROM TestTrnx

/*Output
- Here we are inserting data and then we doing a rollback
- After that we are again doing commit but now where is the transaction
*/

--

Output of the above query is given below-

Case 2 - Nested Transaction - Commit in Outer Transaction

Great now we know what will be result if there are nested transactions !

MSBISkills.com

Pawan Kumar Khowal

Share this

  • LinkedIn
  • Facebook
  • Twitter
  • WhatsApp
  • Email

SQL SERVER | How to get Decimal and Integer Part from Decimal Value

13 Monday Apr 2015

Posted by Pawan Kumar Khowal in SQL Concepts, SQL SERVER, SQL Server Interview Questions

≈ Leave a comment

Tags

Interesting Interview Questions, Interview Qs.SQL SERVER Questions, Interview questions, Interview Questions on SQL, InterviewQuestions, InterviewQuestions for SQL, Methods to find distinct values with out using distinct keywords, puzzle sql developer, Queries for SQL Interview, SELECT Puzzle, SQL, SQL 2012, SQL 2014, SQL 2014 Interview Questions, SQL Interview Questions, SQL Joins, SQL Queries, SQL Quiz, SQL Server Database, SQL SERVER Interview questions, SQL SERVER | How to get Decimal and Integer Part from Decimal Value, SQL Skills, SQL Tricky question, sql/database interview for puzzle sql developer, SQLSERVER, T SQL Puzzles, Tricky Questions, TSQL, TSQL Interview questions, TSQL Queries


SQL SERVER | How to get Decimal and Integer Part from DecimalValue

Recently there was a scenario where we need to extract the decimal and the integer part for the decimal value. We have used below method.


--

/*

Easiest method to get decimal part and Integer part from Decimal Value

*/

DECLARE @DecimalValue AS NUMERIC(10,2) = 23.66
SELECT  @DecimalValue DecimalValue
       ,@DecimalValue - @DecimalValue % 1 DecimalPart
       ,@DecimalValue % 1 DecimalPart

--

Keep learning !, Please add a comment if you have a better idea in the mind.

We all need to learn.

http://MSBISkills.com

Share this

  • LinkedIn
  • Facebook
  • Twitter
  • WhatsApp
  • Email

SQL SERVER | Find Number of Days in a Year

13 Monday Apr 2015

Posted by Pawan Kumar Khowal in SQL Concepts, SQL SERVER, SQL Server Interview Questions

≈ 2 Comments

Tags

Interesting Interview Questions, Interview Qs.SQL SERVER Questions, Interview questions, Interview Questions on SQL, InterviewQuestions, InterviewQuestions for SQL, Methods to find distinct values with out using distinct keywords, puzzle sql developer, Queries for SQL Interview, SELECT Puzzle, SQL, SQL 2012, SQL 2014, SQL 2014 Interview Questions, SQL Interview Questions, SQL Joins, SQL Queries, SQL Quiz, SQL Server Database, SQL SERVER Interview questions, SQL Skills, SQL Tricky question, sql/database interview for puzzle sql developer, SQLSERVER, T SQL Puzzles, Tricky Questions, TSQL, TSQL Interview questions, TSQL Queries


SQL SERVER | Find Number of Days in a Year

Ref – https://www.mathsisfun.com/leap-years.html

There are two types of Years – Leap year and Non Leap year. Lets first understand what are they-

Leap Year

  • A normal year has 365 days.
  • A Leap Year has 366 days (the extra day is the 29th of February).

How to know if a year will be a Leap Year:

Leap Years are any year that can be evenly divided by 4 (such as 2012, 2016, etc)
except if it can can be evenly divided by 100, then it isn’t (such as 2100, 2200, etc)
except if it can be evenly divided by 400, then it is (such as 2000, 2400)

Method 1 | Using Simple Maths & IIF/CASE Statements


/*

Find no of days in a Year - Leap Year / Non Leap Year
Every year has 365 days
If the year is leap then we have to add 1 ,
so logic will be 365 + add 1 if the year is leap

*/

DECLARE @YEAR AS INT = 2012
SELECT NofDays = 365 + ISNULL(CASE WHEN @YEAR%400=0 THEN 1
			 WHEN @YEAR%4=0 THEN 1
			 WHEN @YEAR%100=0 THEN 0
			 END,0)

GO

DECLARE @YEAR AS INT = 2012
SELECT NofDays = 365 +
 IIF( @YEAR%400 =0 , 1 , IIF(@YEAR%4 =0, 1, IIF(@YEAR%100 = 0,0,0)))
GO

--

Method 2 | Using Recursive CTE


--

/*

Method 2 | Using Recursive CTE
Note | We have to add OPTION (MAXRECURSION 366)
If the above option is not sepecified below error will come
"Msg 530, Level 16, State 1, Line 11
 The statement terminated. The maximum recursion 100 has been exhausted
 before statement completion."

*/

DECLARE @YEAR AS INT = 2015
;WITH CTE AS
(
	SELECT CAST(CONCAT('01/01/',@YEAR) AS DATETIME) y1
	UNION ALL
	SELECT DATEADD(d,1,y1) y1
        FROM CTE
        WHERE DATEADD(d,1,y1) <= CAST(CONCAT('12/31/',@YEAR) AS DATETIME)
)
SELECT COUNT(*) NoOfDays FROM CTE
OPTION (MAXRECURSION 366)

--

Method 3 | Using DateDiff


--

/*

Method 3 | Using DateDiff and Cast/Convert

*/

DECLARE @YEAR AS INT = 2012
SELECT
    DATEDIFF(d,CAST(CONCAT('01/01/',@YEAR) AS DATETIME)
    ,CAST(CONCAT('12/31/',@YEAR) AS DATETIME) + 1)

--

Method 4 | Using New DATEFROMPARTS & DATEPART


--

/*

Method 4 | Using New DATEFROMPARTS & DATEPART

*/

DECLARE @YEAR AS INT = 2012
SELECT NofDays = DATEPART(dy,DATEFROMPARTS(@YEAR,12,31))

--

Share this

  • LinkedIn
  • Facebook
  • Twitter
  • WhatsApp
  • Email

SQL Server | Multiple ways to convert an Integer value to String

13 Monday Apr 2015

Posted by Pawan Kumar Khowal in SQL Concepts, SQL SERVER, SQL Server Interview Questions

≈ Leave a comment

Tags

Convert an int to string, How to convert an int to string, int to string, integer to string, Interesting Interview Questions, Interview Qs.SQL SERVER Questions, Interview questions, Interview Questions on SQL, InterviewQuestions, InterviewQuestions for SQL, Methods to find distinct values with out using distinct keywords, puzzle sql developer, Queries for SQL Interview, SELECT Puzzle, SQL, SQL 2012, SQL 2014, SQL 2014 Interview Questions, SQL convert int to string, SQL Interview Questions, SQL Joins, SQL Queries, SQL Quiz, SQL Server Database, SQL SERVER Interview questions, SQL Server | Multiple ways to convert an Integer value to String, SQL Skills, SQL Tricky question, sql/database interview for puzzle sql developer, SQLSERVER, T SQL Puzzles, Tricky Questions, TSQL, TSQL Interview questions, ways to convert an int to string


SQL PUZZLE | Multiple ways to convert an Integer value to String | SQL Interview Question

This question has been asked to one of my collegue in SQL SERVER interview. I know this is not a new way but have we explored any other option apart from cast and convert for this.

Well, there are multiple ways to convert an integer value to a string value.

Some of them are-

  • Method 1 | Using CAST function
  • Method 2 | Using Convert function
  • Method 3 | Using STR function
  • Method 4 | Using Implicit Conversion

Method 1 | Using CAST function

1. It is one of the old methods to convert data from one datatype to another

2. It is the most preferred method of conversion from one datatype to another

Examples below-

--


DECLARE @Int AS INT = 25
SELECT CAST (@Int AS VARCHAR(2)) String
GO

--

Method 2 | Using Convert function

1. It is one of the old methods to convert data from one datatype to another

2. This method is widely used for Date type conversion for variety of formats.

Examples below-

--


DECLARE @Int AS INT = 25
SELECT CONVERT(VARCHAR(2),@Int) String
GO

--

Method 3 | Using STR function

1. It is one of the lesser known fact. Str function returns character data converted from numeric data

2. Note that although this is the workaround you should always use CAST/CONVERT in your development code

--


DECLARE @Int AS INT = 25
SELECT STR(25,2,1) String
GO

--

Method 4 | Using Implicit conversion

1. Here we are taking a Varchar Variable and assigning the int varible
to varchar variable.

2. Note that although this is the workaround you should always use CAST/CONVERT in your development code

--


DECLARE @Int AS INT = 25
DECLARE @Str AS VARCHAR(2) = ''
SET @Str = @Int
SELECT @Str String

--

Please add a comment if you have any other or better solution in mind. I would love to learn it. We all need to learn. Thanks in advance.

Pawan Khowal

Pawan is a SQL Server Developer. If you need any help in writing code/puzzle or training please email at – pawankkmr”AT”gmail.com. Meanwhile please go throgh the top pages from his blog.

Page Detail URL
☛ SQL Advance Puzzles https://msbiskills.com/tsql-puzzles-asked-in-interview-over-the-years/
☛ SQL Tricky Queries https://msbiskills.com/sql-puzzles-finding-outputs/
☛ SQL Server Perfomance tuning Articles https://msbiskills.com/sql-performance-tuning/
☛ SQL Server Articles https://msbiskills.com/t-sql/
☛ SQL Interview Questions & Answers https://msbiskills.com/sql-server-interview-questions/

My SQL Groups on Facebook:

1. If you like this post, you may want to join my SQL SERVER Interview Puzzles/Interview Questions on Facebook: https://www.facebook.com/groups/1430882120556342/

2. If you like this post, you may want to join my SQL Server Puzzles on Facebook:
https://www.facebook.com/groups/206594023090781/

My SQL Page on Facebook:

2. For all the updates you may follow my page -> https://www.facebook.com/MSBISkillscom-1602779883299222/

Enjoy !!! Keep Learning

Http://MsbiSkills.com

Share this

  • LinkedIn
  • Facebook
  • Twitter
  • WhatsApp
  • Email

GUID causes fragmentation in Clustered Indexes

09 Thursday Apr 2015

Posted by Pawan Kumar Khowal in SQL Concepts, SQL SERVER, SQL Server Interview Questions

≈ 3 Comments

Tags

Clustered Indexes, Fragmentation, fragmentation Clustered, fragmentation in Clustered Indexes, GUID causes fragmentation in Clustered Indexes, GUID fragmentation, GUID SQL, Interesting Interview Questions, Interview Qs.SQL SERVER Questions, Interview questions, Interview Questions on SQL, InterviewQuestions, InterviewQuestions for SQL, puzzle sql developer, Queries for SQL Interview, SELECT Puzzle, SQL, SQL 2012, SQL 2014, SQL 2014 Interview Questions, SQL Interview Questions, SQL Joins, SQL Queries, SQL Quiz, SQL Server Database, SQL SERVER Interview questions, SQL Skills, SQL Tricky question, sql/database interview for puzzle sql developer, SQLSERVER, T SQL Puzzles, Tricky Questions, TSQL, TSQL Interview questions, TSQL Queries


How GUIDs can cause fragmentation in clustered indexes

Reference – http://www.sqlskills.com/blogs/paul/can-guid-cluster-keys-cause-non-clustered-index-fragmentation/

A GUID Key will create fragmentation(Fragmentation means the data is stored non-contiguously on disk) because it is random in nature and its size is also on a very higher side. A GUID is of 16 bytes, four times the space of an 4-byte integer. So every time when you insert a row in the index SQL has to search the insertion point in the B-tree and since the value we are expecting is random hence the insertion point is also random.

This means that if an index page is full, a random insert that happens to have to go onto that page will cause a page split to make room for the new record. A page-split is where a new page is allocated and (as near as possible to) half the rows from the splitting page are moved to the new page. The new row is then inserted into one of the two pages, determined by the key value. Usually the newly allocated page is not physically contiguous to the splitting page, and so fragmentation has been caused.

In this case *two* kinds of fragmentation have been caused-

1. Logical fragmentation – Here the next logical page as determined by the index order is not the next physical page in the data file.

2. Physical (or internal) fragmentation – Here the space is being wasted on index pages.

These can both affect query performance, as well as the expense of having to do the page split in the first place.

Check out the example below – I’ll create a clustered index with GUID. Let’s see what happens when we insert 10000 rows:

--

CREATE TABLE TestClusteredKeyFragmentation
(
ID UNIQUEIDENTIFIER DEFAULT NEWID (),
Dates DATETIME DEFAULT GETDATE ()
)

CREATE CLUSTERED INDEX Ix_ID ON TestClusteredKeyFragmentation (ID)
GO

INSERT INTO TestClusteredKeyFragmentation DEFAULT VALUES
GO 10000

--Execute the below query and check the details
SELECT
   OBJECT_NAME (ips.[object_id]) AS 'Object Name',
   si.name AS 'Index Name',
   ROUND (ips.avg_fragmentation_in_percent, 2) AS 'Fragmentation',
   ips.page_count AS 'Pages',
   ROUND (ips.avg_page_space_used_in_percent, 2) AS 'Page Density'
FROM sys.dm_db_index_physical_stats (DB_ID('InMemory'), NULL, NULL, NULL, 'DETAILED') ips
CROSS APPLY sys.indexes si
WHERE
   si.object_id = ips.object_id
   AND si.index_id = ips.index_id
   AND ips.index_level = 0
   AND OBJECT_NAME (ips.[object_id]) = 'TestClusteredKeyFragmentation'
GO
--

The TestClusteredKeyFragmentation clustered index 98.41% fragmented, with around 35% space being wasted on each page. Hence we should never use GUID as Keys. They uses 16 bytes which is four times then the normal integer fields used to take and this space is wasted everywhere. They also expensive in joins and takes more time to perform lookup.

We should always use Integer fields for Primary Key if possible. If you still want to learn more on this topic then click Pauls blog (Paul is the best in SQL SERVER ) – http://www.sqlskills.com/blogs/paul/can-guid-cluster-keys-cause-non-clustered-index-fragmentation/

Keep learning. We all need to learn.

Share this

  • LinkedIn
  • Facebook
  • Twitter
  • WhatsApp
  • Email
← Older posts

Blog Stats

  • 1,087,018 hits

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 1,131 other subscribers

Pawan Khowal

502 SQL Puzzles with answers

Achievement - 500 PuzzlesJuly 18, 2018
The big day is here. Finally presented 500+ puzzles for SQL community.

200 SQL Server Puzzle with Answers

The Big DayAugust 19, 2016
The big day is here. Completed 200 SQL Puzzles today

Archives

March 2023
M T W T F S S
 12345
6789101112
13141516171819
20212223242526
2728293031  
« Oct    

Top Articles

  • pawankkmr.wordpress.com/2…
  • pawankkmr.wordpress.com/2…
  • pawankkmr.wordpress.com/2…
  • pawankkmr.wordpress.com/2…
  • pawankkmr.wordpress.com/2…

Archives

  • October 2020 (29)
  • September 2018 (2)
  • August 2018 (6)
  • July 2018 (25)
  • June 2018 (22)
  • May 2018 (24)
  • April 2018 (33)
  • March 2018 (35)
  • February 2018 (53)
  • January 2018 (48)
  • December 2017 (32)
  • November 2017 (2)
  • October 2017 (20)
  • August 2017 (8)
  • June 2017 (2)
  • March 2017 (1)
  • February 2017 (18)
  • January 2017 (2)
  • December 2016 (5)
  • November 2016 (23)
  • October 2016 (2)
  • September 2016 (14)
  • August 2016 (6)
  • July 2016 (22)
  • June 2016 (27)
  • May 2016 (15)
  • April 2016 (7)
  • March 2016 (5)
  • February 2016 (7)
  • December 2015 (4)
  • October 2015 (23)
  • September 2015 (31)
  • August 2015 (14)
  • July 2015 (16)
  • June 2015 (29)
  • May 2015 (25)
  • April 2015 (44)
  • March 2015 (47)
  • November 2012 (1)
  • July 2012 (8)
  • September 2010 (26)
  • August 2010 (125)
  • July 2010 (2)

Article Categories

  • Analysis Services (6)
    • DAX (6)
  • Data (2)
    • Data warehousing (2)
  • Integration Services (2)
  • Magazines (3)
  • Python (29)
  • Reporting Services (4)
  • SQL SERVER (820)
    • Download SQL Interview Q's (212)
    • SQL Concepts (323)
    • SQL Performance Tuning (155)
    • SQL Puzzles (331)
    • SQL SERVER 2017 Linux (6)
    • SQL Server Interview Questions (308)
    • SQL SERVER Puzzles (332)
    • T SQL Puzzles (547)
    • Tricky SQL Queries (439)
  • UI (30)
    • ASP.NET (5)
    • C# (13)
    • CSS (9)
    • OOPS (3)
  • Uncategorized (5)

Recent Posts

  • Python | The Print and Divide Puzzle October 30, 2020
  • Python | Count consecutive 1’s from a list of 0’s and 1’s October 30, 2020
  • Python | How to convert a number into a list of its digits October 26, 2020
  • Python | Validate an IP Address-IPV6(Internet Protocol version 6) October 26, 2020
  • Python | Print the first non-recurring element in a list October 26, 2020
  • Python | Print the most recurring element in a list October 26, 2020
  • Python | Find the cumulative sum of elements in a list October 26, 2020
  • Python | Check a character is present in a string or not October 26, 2020
  • Python | Check whether a string is palindrome or not October 26, 2020
  • Python | Find the missing number in the array of Ints October 26, 2020
  • Python | How would you delete duplicates in a list October 26, 2020
  • Python | Check whether an array is Monotonic or not October 26, 2020
  • Python | Check whether a number is prime or not October 26, 2020
  • Python | Print list of prime numbers up to a number October 26, 2020
  • Python | Print elements from odd positions in a list October 26, 2020
  • Python | Print positions of a string present in another string October 26, 2020
  • Python | How to sort an array in ascending order October 26, 2020
  • Python | How to reverse an array October 26, 2020
  • Python | Find un-common words from two strings October 26, 2020
  • Python | How to convert a string to a list October 26, 2020
  • Python | Find unique words from a string October 26, 2020
  • Python | Calculate average word length from a string October 26, 2020
  • Python | Find common words from two strings October 26, 2020
  • Python | Find the number of times a substring present in a string October 26, 2020
  • Python | Find maximum value from a list October 26, 2020
  • Python | How to find GCF of two numbers October 26, 2020
  • Python | How to find LCM of two numbers October 26, 2020
  • Python | How to convert a list to a string October 26, 2020
  • Python | Replace NONE by its previous NON None value October 26, 2020
  • Microsoft SQL Server 2019 | Features added to SQL Server on Linux September 26, 2018

Create a website or blog at WordPress.com

  • Follow Following
    • Improving my SQL BI Skills
    • Join 231 other followers
    • Already have a WordPress.com account? Log in now.
    • Improving my SQL BI Skills
    • Customize
    • Follow Following
    • Sign up
    • Log in
    • Report this content
    • View site in Reader
    • Manage subscriptions
    • Collapse this bar
 

Loading Comments...
 

You must be logged in to post a comment.