<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>0xFF00FF</title>
        <link>https://paragraph.com/@0xff00ff</link>
        <description>#bnb</description>
        <lastBuildDate>Fri, 24 Apr 2026 23:03:13 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>0xFF00FF</title>
            <url>https://storage.googleapis.com/papyrus_images/c55398f818db8a3388cbba2189023eec99c958b5b3f52ca130e4e9c0c5240899.avif</url>
            <link>https://paragraph.com/@0xff00ff</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[大厂SQL面试题整理汇总]]></title>
            <link>https://paragraph.com/@0xff00ff/sql</link>
            <guid>HVM4zGVgy0HJX8lYbQYQ</guid>
            <pubDate>Sat, 16 Mar 2024 14:55:04 GMT</pubDate>
            <description><![CDATA[以下 SQL 的执行环境为 HIVE 环境0x01 面试 SQL 函数考点一般围绕开窗函数做文章，首先我们了解下有哪些常用的开窗函数 函数名 作用简介 待补充0x02 数据集构造用户登录数据集：user_name 是用户名, login_date 是用户登录日期登录数据集示例每日订单数据集0x03 面试 SQL 实例（来自互联网）找出连续7天登陆，连续30天登陆的用户（小红书笔试），最大连续登陆天数的问题 --窗口函数思路解答：假设数据集中用户在一天登录一次不重复，对于一个用户登录的天数做递增排序。每天的登录日期减去登录的第几次，找到对应的连续登录的第一天在用户维度对连续登录的第一天做计数过滤，得到对应连续登录的清单。SELECT user_name ,first_day ,COUNT(1) AS cnt FROM ( SELECT * ,date_sub(to_date(login_date, "yyyy/mm/dd"),rn) AS first_day FROM ( SELECT * ,ROW_NUMBER() over(PARTITION BY user_name ORDE...]]></description>
            <content:encoded><![CDATA[<blockquote><p>以下 SQL 的执行环境为 HIVE 环境</p></blockquote><h2 id="h-0x01-sql" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">0x01 面试 SQL 函数考点</h2><p>一般围绕开窗函数做文章，首先我们了解下有哪些常用的开窗函数</p><p>函数名                    作用简介</p><p>待补充</p><h2 id="h-0x02" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">0x02 数据集构造</h2><p>用户登录数据集：user_name 是用户名, login_date 是用户登录日期</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ac2370cc05cfedf608782192d5f521197c6afcad652daa583ed82605fcaa5ca5.png" alt="登录数据集示例" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">登录数据集示例</figcaption></figure><p>每日订单数据集</p><h2 id="h-0x03-sql" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">0x03 面试 SQL 实例（来自互联网）</h2><ol><li><p>找出连续7天登陆，连续30天登陆的用户（<code>小红书笔试</code>），最大连续登陆天数的问题 --窗口函数</p></li></ol><p>思路解答：</p><ul><li><p>假设数据集中用户在一天登录一次不重复，对于一个用户登录的天数做递增排序。</p></li><li><p>每天的登录日期减去登录的第几次，找到对应的连续登录的第一天</p></li><li><p>在用户维度对连续登录的第一天做计数过滤，得到对应连续登录的清单。</p><pre data-type="codeBlock" text="SELECT  user_name
       ,first_day
       ,COUNT(1) AS cnt
FROM
(
    SELECT  *
           ,date_sub(to_date(login_date, &quot;yyyy/mm/dd&quot;),rn) AS first_day
    FROM
    (
        SELECT  *
               ,ROW_NUMBER() over(PARTITION BY user_name ORDER BY  login_date ASC) AS rn
               from jd_test
    ) AS T
) AS T1
GROUP BY  user_name
         ,first_day
HAVING cnt &gt;= 2 -- 具体天数;
"><code><span class="hljs-keyword">SELECT</span>  user_name
       ,first_day
       ,COUNT(<span class="hljs-number">1</span>) <span class="hljs-keyword">AS</span> cnt
<span class="hljs-keyword">FROM</span>
(
    <span class="hljs-keyword">SELECT</span>  *
           ,date_sub(to_date(login_date, <span class="hljs-string">"yyyy/mm/dd"</span>),rn) <span class="hljs-keyword">AS</span> first_day
    <span class="hljs-keyword">FROM</span>
    (
        <span class="hljs-keyword">SELECT</span>  *
               ,ROW_NUMBER() over(PARTITION <span class="hljs-keyword">BY</span> user_name <span class="hljs-keyword">ORDER</span> <span class="hljs-keyword">BY</span>  login_date ASC) <span class="hljs-keyword">AS</span> rn
               <span class="hljs-keyword">from</span> jd_test
    ) <span class="hljs-keyword">AS</span> T
) <span class="hljs-keyword">AS</span> T1
<span class="hljs-keyword">GROUP</span> <span class="hljs-keyword">BY</span>  user_name
         ,first_day
HAVING cnt >= <span class="hljs-number">2</span> -- 具体天数;
</code></pre></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/7f0b1f0c548ade5bf5acaf0889a6525f39016a88bd8496eca8b6dcd454021e88.png" alt="对应结果返回示例" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">对应结果返回示例</figcaption></figure><ol><li><p>有一张订单，需要每日汇总期初到现阶段所有的成交金额（$$字节面试题$$）-- 窗口函数</p></li></ol><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/3dd53a139dbb4be92ed13f3c78e207d90cc5ccfc7698b5b008b4cc99bf503ccf.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><pre data-type="codeBlock" text="-- 订单金额，每日累计求和
SELECT  *
       ,SUM(gmv) over(order by id)
FROM
(
    SELECT  id
           ,SUM(gmv) AS gmv
    FROM jd_test4
    GROUP BY  id
) AS T;
"><code><span class="hljs-comment">-- 订单金额，每日累计求和</span>
<span class="hljs-keyword">SELECT</span>  <span class="hljs-operator">*</span>
       ,<span class="hljs-built_in">SUM</span>(gmv) <span class="hljs-keyword">over</span>(<span class="hljs-keyword">order</span> <span class="hljs-keyword">by</span> id)
<span class="hljs-keyword">FROM</span>
(
    <span class="hljs-keyword">SELECT</span>  id
           ,<span class="hljs-built_in">SUM</span>(gmv) <span class="hljs-keyword">AS</span> gmv
    <span class="hljs-keyword">FROM</span> jd_test4
    <span class="hljs-keyword">GROUP</span> <span class="hljs-keyword">BY</span>  id
) <span class="hljs-keyword">AS</span> T;
</code></pre><pre data-type="codeBlock" text="


"><code></code></pre>]]></content:encoded>
            <author>0xff00ff@newsletter.paragraph.com (0xFF00FF)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/b04ee43c4dff976e19829b3d2be4856414241c2189566197386ff528c8ec12df.png" length="0" type="image/png"/>
        </item>
    </channel>
</rss>