Adventures in Machine Learning

Mastering Advanced SQL: Count(*) Non-Equi JOINs and Window Functions

Top SQL Articles of 2019

If you’re new to programming, chances are you’re feeling overwhelmed with all the new terminology, syntax, and logic. You’re not alone! Many beginners face the same challenges in programming, particularly in SQL.

To help you get up to speed quickly, we’ve compiled a list of the top five SQL articles of 2019, covering everything from common beginner errors to advanced SQL concepts.

Article 1.1: 8 Most Common Programming Errors Made by Beginners

No one is exempt from making mistakes in programming.

However, as a beginner, you are more likely to make certain errors than an experienced programmer. This article outlines the eight most common programming errors made by beginners and provides simple solutions to fix them.

Whether it’s forgetting to use semi-colons or using the wrong data types, this article will help you avoid costly mistakes in your programming journey. Article 1.2: Understanding the SELECT statement in SQL

The SELECT statement is a fundamental and powerful command in SQL that extracts data from a table.

It is the core command used to manipulate and retrieve information. Understanding how to use SELECT correctly is vital to mastering SQL, which is why this article provides a thorough guide to the SELECT statement and its variations.

After reading this article, you’ll be able to retrieve specific data from any SQL database with ease. Article 1.3: INNER


The INNER JOIN command is critical to joining tables together in SQL, a common practice when dealing with relational databases.

If you’re having trouble comprehending how to join tables in SQL, this article is for you. It covers the semantics and syntax behind INNER JOINs in a straightforward way and is enriched with practical examples.

With this knowledge, you’ll be able to blend data from different tables and draw insights from larger datasets. Article 1.4: 30 Common SQL Queries

Beginners have a lot to learn but also a lot to look forward to in SQL.

This article compiles 30 of the most common SQL queries that beginners need to know. From simple commands like selecting and sorting data to advanced queries like getting the average value or finding the number of records, this article presents the cornerstone queries that will form your SQL foundation.

Article 1.5: Grouping Data in SQL Server

Once you become familiar with basic SQL commands and queries, you’ll be able to process **large amounts of data effectively.** This is where grouping data comes into play. In this article, you’ll discover how to use SQL Server’s GROUP BY command to categorize data for efficient analysis.

This article covers the basics of grouping and presents multiple examples to help you understand the concept and its application.

Working with NULLs in SQL

Null values are the bane of many SQL programmers, but they don’t have to be. Understanding NULLs is critical to working in SQL as they can affect the result of a query, but they can also be used to indicate that something is missing in a database.

This section provides an in-depth guide to the concept of NULL and explains how to handle NULL values when working with SQL queries.

Understanding NULL in SQL

NULL values indicate that something is unknown or missing in a database. They are not the same as 0 or empty strings.

A NULL value indicates the absence of a value. However, many SQL programmers make the mistake of treating NULL as a value itself, which can lead to confusion and undesirable results.

This article delves into the intricacies of NULL values and provides helpful tips for using them in your SQL work.

Handling NULL in SQL Queries

NULL values can cause hiccups in SQL queries if not handled properly. Fortunately, there are techniques you can employ to overcome these challenges.

From using the IS NULL operator to the COALESCE function, you’ll learn about the various tools available to help you handle NULLs in your programming work.


We hope this article has provided you with a wealth of knowledge on the top SQL articles of 2019 and working with NULL values. By understanding beginner errors, the SELECT statement, INNER JOINs, SQL queries, and grouping data, you’ll be able to work with SQL databases more effectively.

Additionally, learning how to handle NULL values and using them correctly in your queries will help prevent unwanted errors and confusion. With these skills under your belt, you’ll be well on your way to SQL mastery.


Joining tables is one of the most fundamental operations when working with relational databases. The JOIN command enables you to combine data from two or more tables into a single result set.

In this article, we’ll explore two aspects of JOINs in SQL, including multiple JOINs and CROSS JOINs.

Understanding Multiple JOIN

When JOINing tables, you may encounter situations where you need to combine more than two tables. For example, suppose you have a schema with three tables Customers, Orders, and OrderDetails and you want to retrieve a recordset that shows the customer details, their orders, and the products associated with each order.

To achieve this, you’ll need to use multiple JOINs.

Multiple JOINs are simply a series of JOIN operations between two tables, followed by another JOIN operation with a new table. Using the above example, the SQL code to retrieve the recordset would look like this:



FROM Customers

JOIN Orders

ON Customers.customer_id = Orders.customer_id

JOIN OrderDetails

ON Orders.order_id = OrderDetails.order_id;


In the above example, the first JOIN operation connects the Customers and Orders table based on their common customer_id columns. The second JOIN operation connects the Orders and OrderDetails table based on their common order_id columns.

The result is a recordset that displays customer details, order information, and product details associated with each order. CROSS


A CROSS JOIN, also known as a cartesian product, is a special type of JOIN that returns all possible combinations of rows from two tables.

Unlike other JOIN types like INNER JOIN or OUTER JOIN, there is no need to specify a join condition in a CROSS JOIN.

The following is an example of a CROSS JOIN operation on two tables, A and B:






This operation returns all possible combinations of rows from tables A and B, resulting in a recordset where each row in table A is joined with each row in table B. Cross joins can be useful in creating pivot tables or testing query performance.

SQL Commands and Concepts

SQL is a powerful language that allows you to manipulate and retrieve data from relational databases. However, there are many SQL commands and concepts that beginners find difficult to learn.

In this section, we’ll explore three articles that cover some essential SQL commands and concepts. Article 4.1: Ten SQL Commands You Should Be Using

This article provides a list of ten essential SQL commands that you should know to work effectively with a relational database.

Some of the commands include SELECT, INSERT, UPDATE, DELETE, INNER JOIN, and GROUP BY. The article provides practical examples for each command, along with an explanation of how they work, making it easy to understand and apply in practice.

Article 4.2: Choosing the Right Database Management System

Database management systems (DBMS) have come a long way since the early days of SQL. Today, there are several popular DBMSes available, including MySQL and PostgreSQL.

Choosing the right DBMS for your needs depends on several factors, including the size of your dataset, the complexity of your queries, and the level of security required. This article delves into the differences between MySQL and PostgreSQL and provides insight into which DBMS is best suited for different scenarios.

Article 4.3: Primary Key in SQL

In a database table, a primary key is a column or a set of columns that uniquely identifies each row in the table. A primary key is essential to ensuring data integrity and enables cross-referencing between tables.

This article provides an in-depth explanation of primary keys in SQL, including their purpose, how they work, and how to create them. Understanding primary keys is fundamental to effective database design and essential to working with database systems.


Understanding JOIN operations in SQL, including multiple JOINs and CROSS JOINs, can help you retrieve complex data sets from your database. Additionally, learning essential SQL commands like SELECT, INSERT, and UPDATE, choosing the right database management system, and understanding primary keys are critical skills for any programmer working with relational databases.

By mastering these SQL concepts and commands, you’ll become more proficient in writing efficient SQL queries and more effective at managing data in a database system.

Advanced SQL Topics

If you’re already familiar with basic SQL, you may want to take your skills to the next level by exploring advanced SQL topics. In this article, we’ll cover three advanced SQL concepts, including PostgreSQL count(*), Non-Equi JOINs, and T-SQL Window Functions.

We’ll also delve into the ROW_NUMBER() function and its uses in SQL. Article 5.1: PostgreSQL count(*) made fast

For many SQL developers, count(*) is one of the most frequently used functions.

It is used to count the number of rows in a table. However, for large tables in PostgreSQL, count(*) can be notoriously slow, impacting query performance.

This article explores how to optimize count(*) in PostgreSQL by utilizing a built-in feature called “visibility map.” The article provides practical examples and benchmarks to demonstrate the performance improvements achieved using count(*) with visibility map on a large table. Article 5.2: Non-Equi


A Non-Equi JOIN is a type of JOIN operation in SQL that compares a column with a non-constant expression.

In contrast to Equi JOIN operations, which are based on equality between two columns, Non-Equi JOINs are based on inequalities. This can be useful in situations where you need to select all records in one table that have values greater than or less than a corresponding value in another table.

This article provides an in-depth explanation of Non-Equi JOIN operations, along with practical examples to illustrate their usefulness. Article 5.3: T-SQL Window Functions and Performance

Window Functions are a powerful feature in T-SQL that allow you to perform calculations across multiple rows in a table without the need for a GROUP BY clause.

Window Functions can enhance query performance and simplify complex calculations. This article explores T-SQL Window Functions in detail, including rank, dense rank, row number, sum, avg, and lead/lag functions.

The article demonstrates how to apply Window Functions in practical scenarios and provides best practices to improve query performance.

Understanding ROW_NUMBER()

ROW_NUMBER() is a powerful function in SQL that returns the sequential number of a row within a specified partition. It is often used for pagination, ranking, and row-based calculations.

This function is supported in most popular SQL databases, including PostgreSQL, MySQL, and Microsoft SQL Server. This subtopic provides an overview of ROW_NUMBER() and its uses in SQL, along with practical examples to illustrate its functionality.

Computing Row Numbers with Non-deterministic Order

Computing Row Numbers with Non-deterministic Order is a common issue with ROW_NUMBER() that can lead to unpredictable results. Non-deterministic order refers to situations where there is no specified order for a result set, and the database is free to return rows in any order it chooses.

This subtopic explains how to overcome this issue and ensure accurate row numbering using various techniques such as ORDER BY, stable sort, and auxiliary column.


Advanced SQL topics, such as PostgreSQL count(*), Non-Equi JOINs, and T-SQL Window Functions, can take your SQL skills to the next level. These advanced concepts provide powerful tools for working with large datasets, optimizing query performance, and simplifying complex calculations.

In addition, the ROW_NUMBER() function is an essential tool for pagination, ranking, and row-based calculations, but it’s crucial to understand non-deterministic order to avoid unpredictable results. By mastering these advanced SQL topics and concepts, you’ll be able to tackle complex SQL challenges and become a more proficient SQL developer.

In this article, we explored various advanced SQL topics, including PostgreSQL count(*), Non-Equi JOINs, T-SQL Window Functions, and the ROW_NUMBER() function. These concepts provide powerful tools for working with large datasets, optimizing query performance, and simplifying complex calculations.

By mastering these advanced SQL topics, developers can take their SQL skills to the next level and tackle complex SQL challenges. It’s critical to understand the intricacies of these advanced SQL concepts, such as Non-Equi JOINs and non-deterministic order, to avoid unpredictable results.

Overall, SQL is a powerful language, and exploring advanced SQL concepts can help individuals become more proficient SQL developers and handle complex data challenges with ease.