Recently, I got a request from a business user within my company to create a report which shows the number of consecutive days where money turnover was greater than X value. When I started to prepare the data from our SQL Server database, there were a few tricky parts to solve.
In order to demonstrate how I solved this, I will use_ the _**Stack Overflow**sample database. Let’s translate the business requests into the following: find a number of consecutive days where there were more than 50 posts and each of these posts had more than 50.000 views.
Table dbo.Posts contains around 17.2 million rows. First, let’s check how many posts with more than 50.000 views were per every single day:
SELECT convert(date,CreationDate) as CreationDate ,count(Id) as TotalPosts FROM Posts WHERE CreationDate >= '20080731' AND CreationDate < '20140101' AND ViewCount > 50000 GROUP BY convert(date,CreationDate) ORDER BY CreationDate
When I run this query, I’m getting the following results:
In order to better cope with running queries, I’ve created a non-clustered index on the CreationDate column, with ViewCount column included. Now, when I run the query to check dates where there were more than 50 posts with 50.000+ views, I am getting the following results:
;WITH CTE_POSTS as( select convert(date,CreationDate) CreationDate ,count(Id) totalPosts from Posts where CreationDate >= '20080731' and CreationDate < '20140101' and ViewCount > 50000 group by convert(date,CreationDate) ) SELECT * FROM CTE_POSTS WHERE totalPosts > 50 order by CreationDate
As you can notice, between September 15th 2008 and September 19th, all dates are included. Then, 20th and 21st are missing…This problem is well known as the “Gaps and Islands” problem. Here, the first bucket of dates (15th — 19th) represents “island”, while 20th and 21st represent “gap”.
Let’s first identify our “islands” (buckets of consecutive dates which satisfies the criteria: in our case, dates with more than 50 posts which have 50.000+ views):
; WITH CTE_POSTS as( SELECT CONVERT(DATE,CreationDate) CreationDate ,COUNT(Id) totalPosts from Posts WHERE CreationDate >= '20080731' AND CreationDate < '20140101' AND ViewCount > 50000 GROUP BY convert(date,CreationDate) HAVING COUNT(Id) > 50 ) ,starting as ( SELECT CreationDate ,ROW_NUMBER() OVER(ORDER BY CreationDate) rnm FROM CTE_POSTS as CTE1 WHERE NOT EXISTS ( SELECT * FROM CTE_POSTS as CTE2 WHERE DATEDIFF(dd,CTE2.CreationDate,CTE1.CreationDate) = 1) ) ,ending as ( SELECT CreationDate ,ROW_NUMBER() OVER(ORDER BY CreationDate) rnm FROM CTE_POSTS as CTE1 WHERE NOT EXISTS ( SELECT * FROM CTE_POSTS as CTE2 WHERE DATEDIFF(dd,CTE2.CreationDate,CTE1.CreationDate) = -1) ) SELECT s.CreationDate as startingDate ,e.CreationDate as endingDate ,DATEDIFF(dd,s.CreationDate,e.CreationDate) as ConsecutiveDays FROM starting s INNER JOIN ending e on s.rnm = e.rnm
#data #database #sql #towards-data-science #sql-server #data analysis
SQL stands for Structured Query Language. SQL is a scripting language expected to store, control, and inquiry information put away in social databases. The main manifestation of SQL showed up in 1974, when a gathering in IBM built up the principal model of a social database. The primary business social database was discharged by Relational Software later turning out to be Oracle.
Models for SQL exist. In any case, the SQL that can be utilized on every last one of the major RDBMS today is in various flavors. This is because of two reasons:
1. The SQL order standard is genuinely intricate, and it isn’t handy to actualize the whole standard.
2. Every database seller needs an approach to separate its item from others.
Right now, contrasts are noted where fitting.
#programming books #beginning sql pdf #commands sql #download free sql full book pdf #introduction to sql pdf #introduction to sql ppt #introduction to sql #practical sql pdf #sql commands pdf with examples free download #sql commands #sql free bool download #sql guide #sql language #sql pdf #sql ppt #sql programming language #sql tutorial for beginners #sql tutorial pdf #sql #structured query language pdf #structured query language ppt #structured query language
When you develop large chunks of T-SQL code with the help of the SQL Server Management Studio tool, it is essential to test the “Live” behavior of your code by making sure that each small piece of code works fine and being able to allocate any error message that may cause a failure within that code.
The easiest way to perform that would be to use the T-SQL debugger feature, which used to be built-in over the SQL Server Management Studio tool. But since the T-SQL debugger feature was removed completely from SQL Server Management Studio 18 and later editions, we need a replacement for that feature. This is because we cannot keep using the old versions of SSMS just to support the T-SQL Debugger feature without “enjoying” the new features and bug fixes that are released in the new SSMS versions.
If you plan to wait for SSMS to bring back the T-SQL Debugger feature, vote in the Put Debugger back into SSMS 18 to ask Microsoft to reintroduce it.
As for me, I searched for an alternative tool for a T-SQL Debugger SSMS built-in feature and found that Devart company rolled out a new T-SQL Debugger feature to version 6.4 of SQL – Complete tool. SQL Complete is an add-in for Visual Studio and SSMS that offers scripts autocompletion capabilities, which help develop and debug your SQL database project.
The SQL Debugger feature of SQL Complete allows you to check the execution of your scripts, procedures, functions, and triggers step by step by adding breakpoints to the lines where you plan to start, suspend, evaluate, step through, and then to continue the execution of your script.
You can download SQL Complete from the dbForge Download page and install it on your machine using a straight-forward installation wizard. The wizard will ask you to specify the installation path for the SQL Complete tool and the versions of SSMS and Visual Studio that you plan to install the SQL Complete on, as an add-in, from the versions that are installed on your machine, as shown below:
Once SQL Complete is fully installed on your machine, the dbForge SQL Complete installation wizard will notify you of whether the installation was completed successfully or the wizard faced any specific issue that you can troubleshoot and fix easily. If there are no issues, the wizard will provide you with an option to open the SSMS tool and start using the SQL Complete tool, as displayed below:
When you open SSMS, you will see a new “Debug” tools menu, under which you can navigate the SQL Debugger feature options. Besides, you will see a list of icons that will be used to control the debug mode of the T-SQL query at the leftmost side of the SSMS tool. If you cannot see the list, you can go to View -> Toolbars -> Debugger to make these icons visible.
During the debugging session, the SQL Debugger icons will be as follows:
The functionality of these icons within the SQL Debugger can be summarized as:
#sql server #sql #sql debugger #sql server #sql server stored procedure #ssms #t-sql queries
This article is focused on the T-SQL (Transact-SQL) IsNumeric function and its proper use in day-to-day SQL scripting tasks.
We will also see why it is important to understand how and why IsNumeric can be used – both incorrectly and correctly.
There may be some better alternatives to IsNumeric depending on the context. However, in the cases we’re going to cover in this article, I see this function as the best possible choice.
First of all, let’s get familiar with IsNumeric. Here’s what we can say about it after reading the related information in the Microsoft documentation:
The IsNumeric function determines whether an expression can be evaluated as a number. Here, the expression can consist of symbols and operators which are evaluated as a single data value by SQL Server Database Engine.
Please refer to my article Basic to Complex Uses of Not Equal in T-SQL to get more information about expressions and operators.
#sql server #sql #sql functions #t-sql
In this article, We will discuss how to backup our database in MS-SQL Server using T-SQL Statements.
We need to use **_BACKUP DATABASE _**statement to create full database backup, along with the name of Database and device to store the backup file.
#sql server #backup database #backup database using t-sql #sql query #sql tips #t-sql #tips
Data types are attributes that specify the kind of data that objects such as columns, local variables, expressions, and parameters can hold. Across the RDBMS world, data types are typically grouped into string, numeric, and date data types.
T-SQL supports 6 date and time data types namely:
The first two data types are considered as legacy versions of the newer ones. In this article, we focus on the date data types and, specifically, on the datetime and datetime2 data types available in SQL Server. Table 1 gives details of the various date and time data types available in SQL Server.
#sql server #sql #sql functions #t-sql