<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Marian Eerens</title>
    <description>The latest articles on DEV Community by Marian Eerens (@meerens).</description>
    <link>https://dev.to/meerens</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F718401%2Facb5b88e-2dd3-4198-922f-e1715333ebd7.png</url>
      <title>DEV Community: Marian Eerens</title>
      <link>https://dev.to/meerens</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/meerens"/>
    <language>en</language>
    <item>
      <title>Navigating the Google Cloud Console and Platform</title>
      <dc:creator>Marian Eerens</dc:creator>
      <pubDate>Tue, 02 Aug 2022 22:50:18 +0000</pubDate>
      <link>https://dev.to/meerens/navigating-the-google-cloud-console-and-platform-38pc</link>
      <guid>https://dev.to/meerens/navigating-the-google-cloud-console-and-platform-38pc</guid>
      <description>&lt;p&gt;👩🏼‍💻 Originally &lt;a href="https://www.linkedin.com/posts/marian-eerens_gcp-googlecloudplatform-googlecloud-activity-6960339753435033600-ThH7?utm_source=linkedin_share&amp;amp;utm_medium=member_desktop_web"&gt;posted on LinkedIn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I started using BigQuery in GCP (Google Cloud Platform) as my SQL sandbox and didn't really pay much attention to anything else. And while I will most likely never use a lot of the tools &amp;amp; services available, I at least wanted to understand the core concepts, how the platform is structured and what it actually is (and isn’t).&lt;/p&gt;

&lt;p&gt;If you’re like me (a bit of nerd and always curious 🤓) and want to be able to contribute to conversations without feeling like an imposter then this shortlist of resources will help you get there.&lt;/p&gt;

&lt;p&gt;① &lt;a href="https://www.cloudskillsboost.google/course_templates/60"&gt;𝗚𝗼𝗼𝗴𝗹𝗲 𝗖𝗹𝗼𝘂𝗱 𝗙𝘂𝗻𝗱𝗮𝗺𝗲𝗻𝘁𝗮𝗹𝘀: 𝗖𝗼𝗿𝗲 𝗜𝗻𝗳𝗿𝗮𝘀𝘁𝗿𝘂𝗰𝘁𝘂𝗿𝗲 (𝘃𝗶𝗮 𝗚𝗼𝗼𝗴𝗹𝗲 𝗖𝗹𝗼𝘂𝗱 𝗦𝗸𝗶𝗹𝗹𝘀 𝗕𝗼𝗼𝘀𝘁)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The content gets very technical about halfway through, but thought the first couple of modules were really helpful in framing up some of the basics. You can take the course for free but will need sign up for credits if you want to complete the labs (first 30 days are free).&lt;/p&gt;

&lt;p&gt;② &lt;a href="https://www.youtube.com/playlist?list=PLIivdWyY5sqKh1gDR0WpP9iIOY00IE0xL"&gt;𝗧𝗵𝗲 𝗚𝗖𝗣 𝗘𝘀𝘀𝗲𝗻𝘁𝗶𝗮𝗹𝘀 𝗣𝗹𝗮𝘆𝗹𝗶𝘀𝘁 (𝘃𝗶𝗮 𝘁𝗵𝗲 𝗚𝗼𝗼𝗴𝗹𝗲 𝗖𝗹𝗼𝘂𝗱 𝗧𝗲𝗰𝗵 𝗬𝗼𝘂𝗧𝘂𝗯𝗲 𝗰𝗵𝗮𝗻𝗻𝗲𝗹)&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;This playlist covers a lot of the basics and most of the different tools. I didn’t watch all of them but depending on why you are checking out GCP, you can pick and choose what’s relevant to you.&lt;/p&gt;

&lt;p&gt;③ &lt;a href="https://www.youtube.com/watch?v=JtUIQz_EkUw"&gt;𝗔𝗻 𝗜𝗻𝘁𝗿𝗼𝗱𝘂𝗰𝘁𝗶𝗼𝗻 𝘁𝗼 𝗚𝗖𝗣 𝗳𝗼𝗿 𝗦𝘁𝘂𝗱𝗲𝗻𝘁𝘀 (𝘃𝗶𝗮 𝘁𝗵𝗲 𝗚𝗼𝗼𝗴𝗹𝗲 𝗖𝗹𝗼𝘂𝗱 𝗧𝗲𝗰𝗵 𝗬𝗼𝘂𝗧𝘂𝗯𝗲 𝗰𝗵𝗮𝗻𝗻𝗲𝗹)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I love it when someone explains seemingly abstract concepts and makes it relatable by using easy to understand terminology. Definitely watch the intro, it really helped me frame up Google Cloud vs GCP and the different types of offerings (Infrastructure, Platform, Software).&lt;/p&gt;

&lt;p&gt;④ &lt;a href="https://www.youtube.com/watch?v=UGRDM86MBIQ"&gt;𝗚𝗼𝗼𝗴𝗹𝗲 𝗖𝗹𝗼𝘂𝗱 𝗗𝗶𝗴𝗶𝘁𝗮𝗹 𝗟𝗲𝗮𝗱𝗲𝗿 𝗖𝗲𝗿𝘁𝗶𝗳𝗶𝗰𝗮𝘁𝗶𝗼𝗻 𝗖𝗼𝘂𝗿𝘀𝗲 (𝘃𝗶𝗮 𝗳𝗿𝗲𝗲𝗰𝗼𝗱𝗲𝗰𝗮𝗺𝗽.𝗼𝗿𝗴)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you were looking to get certified and in need of free training content, this 6hour course is incredibly detailed and offers a lot of additional free resources. You can scan the table of contents and navigate to specific topics you’re interested in and then watch parts of the course.&lt;/p&gt;

&lt;p&gt;⑤ &lt;a href="https://cloud.google.com/docs/overview"&gt;𝗚𝗼𝗼𝗴𝗹𝗲 𝗖𝗹𝗼𝘂𝗱 𝗼𝘃𝗲𝗿𝘃𝗶𝗲𝘄 (𝘃𝗶𝗮 𝗚𝗼𝗼𝗴𝗹𝗲 𝗖𝗹𝗼𝘂𝗱 𝗗𝗼𝗰𝘂𝗺𝗲𝗻𝘁𝗮𝘁𝗶𝗼𝗻)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The documentation on Google Cloud is very extensive. I like this overview because it covers the basics and points you towards more in depth documentation if you want to go into more detail.&lt;/p&gt;

&lt;p&gt;Happy learning!&lt;/p&gt;

</description>
      <category>gcp</category>
      <category>googlecloud</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Lessons learnt from the 8 week sql challenge: string_agg</title>
      <dc:creator>Marian Eerens</dc:creator>
      <pubDate>Tue, 07 Jun 2022 12:16:25 +0000</pubDate>
      <link>https://dev.to/meerens/lessons-learnt-from-the-8-week-sql-challenge-stringagg-2che</link>
      <guid>https://dev.to/meerens/lessons-learnt-from-the-8-week-sql-challenge-stringagg-2che</guid>
      <description>&lt;p&gt;👩🏼‍💻 using &lt;a href="https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax" rel="noopener noreferrer"&gt;Google BigQuery SQL syntax&lt;/a&gt;&lt;br&gt;
📁 check the &lt;a href="https://github.com/meerens/8-week-sqlchallenge" rel="noopener noreferrer"&gt;Github repository&lt;/a&gt; for context&lt;/p&gt;

&lt;p&gt;A neat function I discovered during the challenge is &lt;a href="https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#string_agg" rel="noopener noreferrer"&gt;&lt;code&gt;STRING_AGG&lt;/code&gt;&lt;/a&gt; which strings together (concatenates) non null string values in a single field. &lt;/p&gt;

&lt;p&gt;This was by no means a requirement but instead of the output below, I wanted to return a table that shows the 3 customer id's and for each customer id strings together the different product names in a single cell.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq9so0oc8avfe8u5nlvky.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq9so0oc8avfe8u5nlvky.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So what's the syntax for creating the output below?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3bjii2osf26t1fqmip1l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3bjii2osf26t1fqmip1l.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Turns out it's a lot simpler than I thought.&lt;/p&gt;

&lt;p&gt;Instead of this ...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
&lt;span class="n"&gt;customer_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;product_name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;q5_items_sold_ranked&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;count_rank&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt; &lt;span class="k"&gt;ASC&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;... do this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
&lt;span class="n"&gt;customer_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;STRING_AGG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;product_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;', '&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;most_popular_items&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;q5_items_sold_ranked&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;count_rank&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt;
&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt; &lt;span class="k"&gt;ASC&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hope you find this useful, let me know in the comments if any questions.&lt;/p&gt;

</description>
      <category>sql</category>
      <category>bigquery</category>
      <category>8weeksqlchallenge</category>
      <category>sqltips</category>
    </item>
    <item>
      <title>Lessons learnt from the 8 week sql challenge: window functions &amp; ranking</title>
      <dc:creator>Marian Eerens</dc:creator>
      <pubDate>Wed, 04 May 2022 19:40:57 +0000</pubDate>
      <link>https://dev.to/meerens/lessons-learnt-from-the-8-week-sql-challenge-window-functions-ranking-1c54</link>
      <guid>https://dev.to/meerens/lessons-learnt-from-the-8-week-sql-challenge-window-functions-ranking-1c54</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;👩🏼‍💻 using &lt;a href="https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax" rel="noopener noreferrer"&gt;Google BigQuery SQL syntax&lt;/a&gt;&lt;br&gt;
📁 check the &lt;a href="https://github.com/meerens/8-week-sqlchallenge" rel="noopener noreferrer"&gt;Github repository&lt;/a&gt; for context&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For the longest time I've had a love/hate relationship with WINDOW functions in SQL but recently had a moment where I finally started seeing some of the light.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;DENSE_RANK&lt;/code&gt; &lt;code&gt;RANK&lt;/code&gt; and &lt;code&gt;ROW_NUMBER&lt;/code&gt; are amongst the more powerful WINDOW functions and it's important to understand how they behave differently so you make the right choice for your use case.&lt;/p&gt;

&lt;p&gt;Let's take a closer look at an &lt;strong&gt;example&lt;/strong&gt; to help frame things up. &lt;/p&gt;

&lt;p&gt;The query below ...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; 
&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;customer_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;order_date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;product_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
&lt;span class="n"&gt;ROW_NUMBER&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;PARTITION&lt;/span&gt; 
  &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;order_date&lt;/span&gt; &lt;span class="k"&gt;ASC&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;row_number&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;RANK&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;PARTITION&lt;/span&gt; 
  &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;order_date&lt;/span&gt; &lt;span class="k"&gt;ASC&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;DENSE_RANK&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;PARTITION&lt;/span&gt; 
  &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;order_date&lt;/span&gt; &lt;span class="k"&gt;ASC&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;dense_rank&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;sqlchallenge_week1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sales&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;
  &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;sqlchallenge_week1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;menu&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;
    &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;product_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;product_id&lt;/span&gt;
&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;... will generate the output below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgq4el9ogvugy5wnq1hye.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgq4el9ogvugy5wnq1hye.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Can you tell from the image above &lt;strong&gt;how a WINDOW function actually behaves&lt;/strong&gt; and how it's different from a standard AGGREGATE function?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;WINDOW functions create a partition of the table based on a set of parameters. In our the case the partition is created for every customer id, the records in that partition are sorted by order date ascending.&lt;/li&gt;
&lt;li&gt;Next we're calling a function on that partition where for every row in a value is generated that will go into a new column that gets added to the table. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When you look at the example in our table you'll notice that results are not grouped meaning the same amount of rows (14) went in as came out. And that's how &lt;a href="https://cloud.google.com/bigquery/docs/reference/standard-sql/analytic-function-concepts" rel="noopener noreferrer"&gt;WINDOW functions&lt;/a&gt; (also called analytical functions) are different from &lt;a href="https://cloud.google.com/bigquery/docs/reference/standard-sql/aggregate_functions" rel="noopener noreferrer"&gt;AGGREGATE functions&lt;/a&gt;. In case of our example an AGGREGATE function like COUNT() would have grouped all the rows per customer id to then count the rows in each group and return a single value per customer id resulting in the output below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx0lazhouccvpkh7jhl05.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx0lazhouccvpkh7jhl05.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now let's go back to our WINDOW functions and take a look at  how &lt;code&gt;RANK&lt;/code&gt;, &lt;code&gt;DENSE_RANK&lt;/code&gt; and &lt;code&gt;ROW_NUMBER&lt;/code&gt; are different from each other.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cloud.google.com/bigquery/docs/reference/standard-sql/numbering_functions#row_number" rel="noopener noreferrer"&gt;ROW_NUMBER&lt;/a&gt;&lt;br&gt;
Every row in the partition or window gets assigned a number which starts at 1 being the first row in the ordered partition and so on. You'll have noticed every row in the window is assigned a unique number and the order of those numbers is sequential with increments of 1.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cloud.google.com/bigquery/docs/reference/standard-sql/numbering_functions#rank" rel="noopener noreferrer"&gt;RANK&lt;/a&gt;&lt;br&gt;
When assigning a number to each row in the partition or window we follow the same logic as ROW_NUMBER. The only difference being that rows with the same order date receive the same rank number, and the rank number for every row in the next subset isn't incremented by 1 but 1 + number of rows in the previous subset.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cloud.google.com/bigquery/docs/reference/standard-sql/numbering_functions#dense_rank" rel="noopener noreferrer"&gt;DENSE_RANK&lt;/a&gt;&lt;br&gt;
For DENSE_RANK every row in our subset in the partition gets assigned a unique number which is incremented by 1 for next subset.&lt;/p&gt;

&lt;p&gt;Hope you find this useful, let me know in the comments if any questions.&lt;/p&gt;

&lt;p&gt;📚 For a broader view on windows functions &lt;strong&gt;I can recommend the following blog posts&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://towardsdatascience.com/a-guide-to-advanced-sql-window-functions-f63f2642cbf9" rel="noopener noreferrer"&gt;An Easy Guide to Advanced SQL Window Functions&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.count.co/take-your-sql-from-good-to-great-part-4/" rel="noopener noreferrer"&gt;Take your SQL from Good to Great: Part 4 (Window Functions)&lt;/a&gt;&lt;/p&gt;

</description>
      <category>sql</category>
      <category>bigquery</category>
      <category>8weeksqlchallenge</category>
    </item>
    <item>
      <title>Learn sql we must</title>
      <dc:creator>Marian Eerens</dc:creator>
      <pubDate>Mon, 25 Apr 2022 11:28:56 +0000</pubDate>
      <link>https://dev.to/meerens/learn-sql-we-must-1k3c</link>
      <guid>https://dev.to/meerens/learn-sql-we-must-1k3c</guid>
      <description>&lt;p&gt;If you're &lt;strong&gt;new to SQL&lt;/strong&gt; and are looking for some &lt;strong&gt;free resources&lt;/strong&gt; to help you get started, then this list of resources is for you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.craft.do/s/VzvaPiNX6jvxX5"&gt;My SQL Resources&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Content is currently grouped in these &lt;strong&gt;4 categories&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free learning tutorials, video series and courses&lt;/li&gt;
&lt;li&gt;Useful blogs on important concepts&lt;/li&gt;
&lt;li&gt;Practice environments &amp;amp; challenges&lt;/li&gt;
&lt;li&gt;Useful tools and other resources&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm always looking to add more so please share your suggestions and recommendations in the comments.&lt;/p&gt;

</description>
      <category>sql</category>
      <category>database</category>
      <category>beginners</category>
      <category>learningsql</category>
    </item>
  </channel>
</rss>
