<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>인동머스크</title>
    <link>https://indong1998.tistory.com/</link>
    <description>&amp;quot; 우리에게는 
존재하지 않는 것들을 꿈꿀 수 있는 사람들이 필요하다. &amp;quot;




(ADsP / 빅데이터분석기사 / SQLD)



https://github.com/Indongspace 
</description>
    <language>ko</language>
    <pubDate>Thu, 9 Apr 2026 06:14:11 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>indongspace</managingEditor>
    <image>
      <title>인동머스크</title>
      <url>https://tistory1.daumcdn.net/tistory/6798904/attach/eb53f20357634c068de04bb5fac24638</url>
      <link>https://indong1998.tistory.com</link>
    </image>
    <item>
      <title>LeetCode 코딩 테스트 - Department Top Three Salaries(LV.Hard)</title>
      <link>https://indong1998.tistory.com/210</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Table:&lt;span&gt;&amp;nbsp;&lt;/span&gt;Employee&lt;/p&gt;
&lt;pre class=&quot;pgsql&quot; style=&quot;background-color: #f0f0f0; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| id           | int     |
| name         | varchar |
| salary       | int     |
| departmentId | int     |
+--------------+---------+
id is the primary key (column with unique values) for this table.
departmentId is a foreign key (reference column) of the ID from the Department table.
Each row of this table indicates the ID, name, and salary of an employee. It also contains the ID of their department.
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Table:&lt;span&gt;&amp;nbsp;&lt;/span&gt;Department&lt;/p&gt;
&lt;pre class=&quot;asciidoc&quot; style=&quot;background-color: #f0f0f0; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| id          | int     |
| name        | varchar |
+-------------+---------+
id is the primary key (column with unique values) for this table.
Each row of this table indicates the ID of a department and its name.
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;A company's executives are interested in seeing who earns the most money in each of the company's departments. A&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;high earner&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;in a department is an employee who has a salary in the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;top three unique&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;salaries for that department.&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Write a solution to find the employees who are&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;high earners&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;in each of the departments.&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Return the result table&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;in any order&lt;/b&gt;.&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The&amp;nbsp;result format is in the following example.&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;asciidoc&quot; style=&quot;background-color: #f0f0f0; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: 
Employee table:
+----+-------+--------+--------------+
| id | name  | salary | departmentId |
+----+-------+--------+--------------+
| 1  | Joe   | 85000  | 1            |
| 2  | Henry | 80000  | 2            |
| 3  | Sam   | 60000  | 2            |
| 4  | Max   | 90000  | 1            |
| 5  | Janet | 69000  | 1            |
| 6  | Randy | 85000  | 1            |
| 7  | Will  | 70000  | 1            |
+----+-------+--------+--------------+
Department table:
+----+-------+
| id | name  |
+----+-------+
| 1  | IT    |
| 2  | Sales |
+----+-------+
Output: 
+------------+----------+--------+
| Department | Employee | Salary |
+------------+----------+--------+
| IT         | Max      | 90000  |
| IT         | Joe      | 85000  |
| IT         | Randy    | 85000  |
| IT         | Will     | 70000  |
| Sales      | Henry    | 80000  |
| Sales      | Sam      | 60000  |
+------------+----------+--------+
Explanation: 
In the IT department:
- Max earns the highest unique salary
- Both Randy and Joe earn the second-highest unique salary
- Will earns the third-highest unique salary

In the Sales department:
- Henry earns the highest salary
- Sam earns the second-highest salary
- There is no third-highest salary as there are only two employees
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;There are no employees with the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;exact&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;same name, salary&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;department.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1745153592787&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 쿼리를 작성하는 목표, 확인할 지표 : 각 부서에서 탑 3의 연봉값을 가지고 있는 직원 추출 / salary
# 쿼리 계산 방법 : 1. 부서별 연봉(distinct) 탑 3 추출 -&amp;gt; 2. 탑3와 같은 연봉을 가지고 있는 직원 추출 -&amp;gt; 3. join으로 부서명 붙이기 
# 데이터의 기간 : x
# 사용할 테이블 : employee, department
# JOIN KEY : departmentid, id
# 데이터 특징 : x
# 1
WITH top_3 AS (
    SELECT
        departmentid,
        salary
    FROM (
        SELECT
            departmentid,
            salary,
            DENSE_RANK() OVER(PARTITION BY departmentid ORDER BY salary DESC) AS rnk
        FROM employee
    ) AS a
    WHERE
        rnk IN (1,2,3)
), base AS (
    # 2
    SELECT
        DISTINCT
            e.name,
            e.salary,
            e.departmentid
    FROM employee AS e
    INNER JOIN  top_3 AS t
    ON e.salary = t.salary AND e.departmentid = t.departmentid
)
# 3
SELECT
    d.name AS department,
    b.name AS employee,
    b.salary AS salary
FROM base AS b
INNER JOIN department AS d
ON b.departmentid = d.id&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>[SQL]</category>
      <category>leetcode</category>
      <category>mysql</category>
      <category>코딩테스트</category>
      <author>indongspace</author>
      <guid isPermaLink="true">https://indong1998.tistory.com/210</guid>
      <comments>https://indong1998.tistory.com/210#entry210comment</comments>
      <pubDate>Sun, 20 Apr 2025 21:56:20 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 코딩 테스트 - Find Students Who Improved(LV.Medium)</title>
      <link>https://indong1998.tistory.com/209</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Table:&lt;span&gt;&amp;nbsp;&lt;/span&gt;Scores&lt;/p&gt;
&lt;pre class=&quot;gherkin&quot; style=&quot;background-color: #f0f0f0; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| student_id  | int     |
| subject     | varchar |
| score       | int     |
| exam_date   | varchar |
+-------------+---------+
(student_id, subject, exam_date) is the primary key for this table.
Each row contains information about a student's score in a specific subject on a particular exam date. score is between 0 and 100 (inclusive).
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Write a solution to find the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;students who have shown improvement&lt;/b&gt;. A student is considered to have shown improvement if they meet&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;both&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;of these conditions:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Have taken exams in the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;same subject&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;on at least two different dates&lt;/li&gt;
&lt;li&gt;Their&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;latest score&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;in that subject is&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;higher&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;than their&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;first score&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Return&lt;span&gt;&amp;nbsp;&lt;/span&gt;the result table&amp;nbsp;ordered by&lt;span&gt;&amp;nbsp;&lt;/span&gt;student_id,&lt;span&gt;&amp;nbsp;&lt;/span&gt;subject&lt;span&gt;&amp;nbsp;&lt;/span&gt;in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;ascending&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;order.&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The result format is in the following example.&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example:&lt;/b&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f0f0; color: #000000; text-align: start;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Input:&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Scores table:&lt;/p&gt;
&lt;pre class=&quot;gherkin&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;+------------+----------+-------+------------+
| student_id | subject  | score | exam_date  |
+------------+----------+-------+------------+
| 101        | Math     | 70    | 2023-01-15 |
| 101        | Math     | 85    | 2023-02-15 |
| 101        | Physics  | 65    | 2023-01-15 |
| 101        | Physics  | 60    | 2023-02-15 |
| 102        | Math     | 80    | 2023-01-15 |
| 102        | Math     | 85    | 2023-02-15 |
| 103        | Math     | 90    | 2023-01-15 |
| 104        | Physics  | 75    | 2023-01-15 |
| 104        | Physics  | 85    | 2023-02-15 |
+------------+----------+-------+------------+
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Output:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;asciidoc&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;+------------+----------+-------------+--------------+
| student_id | subject  | first_score | latest_score |
+------------+----------+-------------+--------------+
| 101        | Math     | 70          | 85           |
| 102        | Math     | 80          | 85           |
| 104        | Physics  | 75          | 85           |
+------------+----------+-------------+--------------+
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Explanation:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Student 101 in Math: Improved from 70 to 85&lt;/li&gt;
&lt;li&gt;Student 101 in Physics: No improvement (dropped from 65 to 60)&lt;/li&gt;
&lt;li&gt;Student 102 in Math: Improved from 80 to 85&lt;/li&gt;
&lt;li&gt;Student 103 in Math: Only one exam, not eligible&lt;/li&gt;
&lt;li&gt;Student 104 in Physics: Improved from 75 to 85&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Result table is ordered by student_id, subject.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1743945366029&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 쿼리를 작성하는 목표, 확인할 지표 : 성적이 오른 학생 찾기 / subject, score, exam_date
# 쿼리 계산 방법 : 1. 시험을 두 번 이상 본 학생만 추출 -&amp;gt; 2. 과목별 첫 시험의 성적과 비교해서 가장 최근에 본 성적이 더 높은 학생만 추출 -&amp;gt; 3. 정렬
# 데이터의 기간 : x
# 사용할 테이블 : scores
# JOIN KEY : student_id, subject
# 데이터 특징 : x
WITH twice AS (
    # 1
    SELECT
        student_id,
        subject,
        COUNT(*) AS subject_cnt
    FROM scores
    GROUP BY
        student_id, subject
    HAVING
        COUNT(*) &amp;gt; 1
), base AS (
    SELECT
        s.student_id,
        s.subject,
        s.score,
        s.exam_date
    FROM scores AS s
    # 1
    INNER JOIN twice AS t
    ON s.student_id = t.student_id AND
        s.subject = t.subject
)
# 2
SELECT
    DISTINCT
        student_id,
        subject,
        first_score,
        latest_score
FROM (
SELECT
    student_id,
    subject,
    FIRST_VALUE(score) OVER(PARTITION BY student_id, subject ORDER BY exam_date ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS first_score,
    LAST_VALUE(score) OVER(PARTITION BY student_id, subject ORDER BY exam_date ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS latest_score
FROM base   
) AS a
WHERE
    first_score &amp;lt; latest_score
# 3
ORDER BY
    student_id, subject&lt;/code&gt;&lt;/pre&gt;</description>
      <category>[SQL]</category>
      <category>leetcode</category>
      <category>mysql</category>
      <category>코딩테스트</category>
      <author>indongspace</author>
      <guid isPermaLink="true">https://indong1998.tistory.com/209</guid>
      <comments>https://indong1998.tistory.com/209#entry209comment</comments>
      <pubDate>Sun, 6 Apr 2025 22:16:34 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 코딩 테스트 - Odd and Even Transactions(LV.Medium)</title>
      <link>https://indong1998.tistory.com/208</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Table:&lt;span&gt;&amp;nbsp;&lt;/span&gt;transactions&lt;/p&gt;
&lt;pre class=&quot;pgsql&quot; style=&quot;background-color: #f0f0f0; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;+------------------+------+
| Column Name      | Type | 
+------------------+------+
| transaction_id   | int  |
| amount           | int  |
| transaction_date | date |
+------------------+------+
The transactions_id column uniquely identifies each row in this table.
Each row of this table contains the transaction id, amount and transaction date.
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Write a solution to find the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;sum of amounts&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;for&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;odd&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;even&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;transactions for each day. If there are no odd or even transactions for a specific date, display as&lt;span&gt;&amp;nbsp;&lt;/span&gt;0.&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Return&lt;span&gt;&amp;nbsp;&lt;/span&gt;the result table ordered by&lt;span&gt;&amp;nbsp;&lt;/span&gt;transaction_date&lt;span&gt;&amp;nbsp;&lt;/span&gt;in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;ascending&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;order.&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The result format is in the following example.&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example:&lt;/b&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f0f0; color: #000000; text-align: start;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Input:&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;transactions&lt;span&gt;&amp;nbsp;&lt;/span&gt;table:&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;+----------------+--------+------------------+
| transaction_id | amount | transaction_date |
+----------------+--------+------------------+
| 1              | 150    | 2024-07-01       |
| 2              | 200    | 2024-07-01       |
| 3              | 75     | 2024-07-01       |
| 4              | 300    | 2024-07-02       |
| 5              | 50     | 2024-07-02       |
| 6              | 120    | 2024-07-03       |
+----------------+--------+------------------+
  &lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Output:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;asciidoc&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;+------------------+---------+----------+
| transaction_date | odd_sum | even_sum |
+------------------+---------+----------+
| 2024-07-01       | 75      | 350      |
| 2024-07-02       | 0       | 350      |
| 2024-07-03       | 0       | 120      |
+------------------+---------+----------+&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1743694134787&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 쿼리를 작성하는 목표, 확인할 지표 : 홀수/짝수 별로 amount의 합산 구하기 / amount, transaction_date
# 쿼리 계산 방법 : 1. group by sum(case when)으로 홀수 짝수 별 amount의 sum 구하기 -&amp;gt; 2. 정렬
# 데이터의 기간 : x
# 사용할 테이블 : transactions
# JOIN KEY : x
# 데이터 특징 : x
SELECT
    transaction_date,
    # 1
    SUM(CASE WHEN amount % 2 != 0 THEN amount ELSE 0 END) AS odd_sum,
    SUM(CASE WHEN amount % 2 = 0 THEN amount ELSE 0 END) AS even_sum
FROM transactions
GROUP BY
    transaction_date
# 2
ORDER BY
    transaction_date&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>[SQL]</category>
      <category>leetcode</category>
      <category>mysql</category>
      <category>코딩테스트</category>
      <author>indongspace</author>
      <guid isPermaLink="true">https://indong1998.tistory.com/208</guid>
      <comments>https://indong1998.tistory.com/208#entry208comment</comments>
      <pubDate>Fri, 4 Apr 2025 00:29:48 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 코딩 테스트 - Analyze Subscription Conversion(LV.Medium)</title>
      <link>https://indong1998.tistory.com/207</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Table:&lt;span&gt;&amp;nbsp;&lt;/span&gt;UserActivity&lt;/p&gt;
&lt;pre class=&quot;pgsql&quot; style=&quot;background-color: #f0f0f0; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;+------------------+---------+
| Column Name      | Type    | 
+------------------+---------+
| user_id          | int     |
| activity_date    | date    |
| activity_type    | varchar |
| activity_duration| int     |
+------------------+---------+
(user_id, activity_date, activity_type) is the unique key for this table.
activity_type is one of ('free_trial', 'paid', 'cancelled').
activity_duration is the number of minutes the user spent on the platform that day.
Each row represents a user's activity on a specific date.
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;A subscription service wants to analyze user behavior patterns. The company offers a&lt;span&gt;&amp;nbsp;&lt;/span&gt;7-day&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;free trial&lt;/b&gt;, after which users can subscribe to a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;paid plan&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;or&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;cancel&lt;/b&gt;. Write a solution to:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Find users who converted from free trial to paid subscription&lt;/li&gt;
&lt;li&gt;Calculate each user's&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;average daily activity duration&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;during their&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;free trial&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;period (rounded to&lt;span&gt;&amp;nbsp;&lt;/span&gt;2&lt;span&gt;&amp;nbsp;&lt;/span&gt;decimal places)&lt;/li&gt;
&lt;li&gt;Calculate each user's&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;average daily activity duration&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;during their&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;paid&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;subscription period (rounded to&lt;span&gt;&amp;nbsp;&lt;/span&gt;2&lt;span&gt;&amp;nbsp;&lt;/span&gt;decimal places)&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Return&lt;span&gt;&amp;nbsp;&lt;/span&gt;the result table ordered by&lt;span&gt;&amp;nbsp;&lt;/span&gt;user_id&lt;span&gt;&amp;nbsp;&lt;/span&gt;in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;ascending&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;order.&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The result format is in the following example.&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example:&lt;/b&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f0f0; color: #000000; text-align: start;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Input:&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UserActivity table:&lt;/p&gt;
&lt;pre class=&quot;gherkin&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;+---------+---------------+---------------+-------------------+
| user_id | activity_date | activity_type | activity_duration |
+---------+---------------+---------------+-------------------+
| 1       | 2023-01-01    | free_trial    | 45                |
| 1       | 2023-01-02    | free_trial    | 30                |
| 1       | 2023-01-05    | free_trial    | 60                |
| 1       | 2023-01-10    | paid          | 75                |
| 1       | 2023-01-12    | paid          | 90                |
| 1       | 2023-01-15    | paid          | 65                |
| 2       | 2023-02-01    | free_trial    | 55                |
| 2       | 2023-02-03    | free_trial    | 25                |
| 2       | 2023-02-07    | free_trial    | 50                |
| 2       | 2023-02-10    | cancelled     | 0                 |
| 3       | 2023-03-05    | free_trial    | 70                |
| 3       | 2023-03-06    | free_trial    | 60                |
| 3       | 2023-03-08    | free_trial    | 80                |
| 3       | 2023-03-12    | paid          | 50                |
| 3       | 2023-03-15    | paid          | 55                |
| 3       | 2023-03-20    | paid          | 85                |
| 4       | 2023-04-01    | free_trial    | 40                |
| 4       | 2023-04-03    | free_trial    | 35                |
| 4       | 2023-04-05    | paid          | 45                |
| 4       | 2023-04-07    | cancelled     | 0                 |
+---------+---------------+---------------+-------------------+
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Output:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;asciidoc&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;+---------+--------------------+-------------------+
| user_id | trial_avg_duration | paid_avg_duration |
+---------+--------------------+-------------------+
| 1       | 45.00              | 76.67             |
| 3       | 70.00              | 63.33             |
| 4       | 37.50              | 45.00             |
+---------+--------------------+-------------------+&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1743603268592&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 쿼리를 작성하는 목표, 확인할 지표 : free_trial에서 paid로 전환한 사람들의 free_trial / paid 별 평균 사용 시간 구하기 / activity_type, activity_date, activity_duration
# 쿼리 계산 방법 : 1. free_trial -&amp;gt; paid로 전환한 유저 구하기 -&amp;gt; 2. 이들 중에서 free_trial or paid 별 평균 사용 시간 구하기 -&amp;gt; 3. 정렬
# 데이터의 기간 : x
# 사용할 테이블 : useractivity
# JOIN KEY : x
# 데이터 특징 : x
WITH base AS (
    SELECT
        user_id,
        activity_type,
        activity_duration
    FROM useractivity
    # 1
    WHERE
        user_id IN (SELECT user_id FROM useractivity WHERE activity_type = 'free_trial') AND
        user_id IN (SELECT user_id FROM useractivity WHERE activity_type = 'paid')
), ft AS (
    # 2
    SELECT
        user_id,
        AVG(activity_duration) AS trial_avg_duration
    FROM base
    WHERE
        activity_type = 'free_trial'
    GROUP BY
        user_id
), p AS (
    # 2
    SELECT
        user_id,
        AVG(activity_duration) AS paid_avg_duration
    FROM base
    WHERE
        activity_type = 'paid'
    GROUP BY
        user_id
)
SELECT
    ft.user_id,
    ROUND(ft.trial_avg_duration, 2) AS trial_avg_duration,
    ROUND(p.paid_avg_duration, 2) AS paid_avg_duration
FROM ft
INNER JOIN p
ON ft.user_id = p.user_id
# 3
ORDER BY
    user_id&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>[SQL]</category>
      <category>leetcode</category>
      <category>mysql</category>
      <category>코딩테스트</category>
      <author>indongspace</author>
      <guid isPermaLink="true">https://indong1998.tistory.com/207</guid>
      <comments>https://indong1998.tistory.com/207#entry207comment</comments>
      <pubDate>Wed, 2 Apr 2025 23:17:31 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 코딩 테스트 - DNA Pattern Recognition(LV.Medium)</title>
      <link>https://indong1998.tistory.com/206</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Table:&lt;span&gt;&amp;nbsp;&lt;/span&gt;Samples&lt;/p&gt;
&lt;pre class=&quot;asciidoc&quot; style=&quot;background-color: #f0f0f0; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;+----------------+---------+
| Column Name    | Type    | 
+----------------+---------+
| sample_id      | int     |
| dna_sequence   | varchar |
| species        | varchar |
+----------------+---------+
sample_id is the unique key for this table.
Each row contains a DNA sequence represented as a string of characters (A, T, G, C) and the species it was collected from.
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Biologists are studying basic patterns in DNA sequences. Write a solution to identify&lt;span&gt;&amp;nbsp;&lt;/span&gt;sample_id&lt;span&gt;&amp;nbsp;&lt;/span&gt;with the following patterns:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Sequences that&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;start&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;with&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;ATG&lt;/b&gt;&amp;nbsp;(a common&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;start codon&lt;/b&gt;)&lt;/li&gt;
&lt;li&gt;Sequences that&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;end&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;with either&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;TAA&lt;/b&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;TAG&lt;/b&gt;, or&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;TGA&lt;/b&gt;&amp;nbsp;(&lt;b&gt;stop codons&lt;/b&gt;)&lt;/li&gt;
&lt;li&gt;Sequences containing the motif&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;ATAT&lt;/b&gt;&amp;nbsp;(a simple repeated pattern)&lt;/li&gt;
&lt;li&gt;Sequences that have&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;at least&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;3&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;consecutive&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;G&lt;/b&gt;&amp;nbsp;(like&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;GGG&lt;/b&gt;&amp;nbsp;or&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;GGGG&lt;/b&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Return&lt;span&gt;&amp;nbsp;&lt;/span&gt;the result table ordered by&amp;nbsp;sample_id in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;ascending&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;order.&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The result format is in the following example.&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example:&lt;/b&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f0f0; color: #000000; text-align: start;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Input:&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Samples table:&lt;/p&gt;
&lt;pre class=&quot;gherkin&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;+-----------+------------------+-----------+
| sample_id | dna_sequence     | species   |
+-----------+------------------+-----------+
| 1         | ATGCTAGCTAGCTAA  | Human     |
| 2         | GGGTCAATCATC     | Human     |
| 3         | ATATATCGTAGCTA   | Human     |
| 4         | ATGGGGTCATCATAA  | Mouse     |
| 5         | TCAGTCAGTCAG     | Mouse     |
| 6         | ATATCGCGCTAG     | Zebrafish |
| 7         | CGTATGCGTCGTA    | Zebrafish |
+-----------+------------------+-----------+
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Output:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;gherkin&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;+-----------+------------------+-------------+-------------+------------+------------+------------+
| sample_id | dna_sequence     | species     | has_start   | has_stop   | has_atat   | has_ggg    |
+-----------+------------------+-------------+-------------+------------+------------+------------+
| 1         | ATGCTAGCTAGCTAA  | Human       | 1           | 1          | 0          | 0          |
| 2         | GGGTCAATCATC     | Human       | 0           | 0          | 0          | 1          |
| 3         | ATATATCGTAGCTA   | Human       | 0           | 0          | 1          | 0          |
| 4         | ATGGGGTCATCATAA  | Mouse       | 1           | 1          | 0          | 1          |
| 5         | TCAGTCAGTCAG     | Mouse       | 0           | 0          | 0          | 0          |
| 6         | ATATCGCGCTAG     | Zebrafish   | 0           | 1          | 1          | 0          |
| 7         | CGTATGCGTCGTA    | Zebrafish   | 0           | 0          | 0          | 0          |
+-----------+------------------+-------------+-------------+------------+------------+------------+
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Explanation:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Sample 1 (ATGCTAGCTAGCTAA):
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Starts with ATG&amp;nbsp;(has_start = 1)&lt;/li&gt;
&lt;li&gt;Ends with TAA&amp;nbsp;(has_stop = 1)&lt;/li&gt;
&lt;li&gt;Does not contain ATAT&amp;nbsp;(has_atat = 0)&lt;/li&gt;
&lt;li&gt;Does not contain at least 3 consecutive 'G's (has_ggg = 0)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Sample 2 (GGGTCAATCATC):
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Does not start with ATG&amp;nbsp;(has_start = 0)&lt;/li&gt;
&lt;li&gt;Does not end with TAA, TAG, or TGA&amp;nbsp;(has_stop = 0)&lt;/li&gt;
&lt;li&gt;Does not contain ATAT&amp;nbsp;(has_atat = 0)&lt;/li&gt;
&lt;li&gt;Contains GGG&amp;nbsp;(has_ggg = 1)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Sample 3 (ATATATCGTAGCTA):
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Does not start with ATG&amp;nbsp;(has_start = 0)&lt;/li&gt;
&lt;li&gt;Does not end with TAA, TAG, or TGA&amp;nbsp;(has_stop = 0)&lt;/li&gt;
&lt;li&gt;Contains ATAT&amp;nbsp;(has_atat = 1)&lt;/li&gt;
&lt;li&gt;Does not contain at least 3 consecutive 'G's (has_ggg = 0)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Sample 4 (ATGGGGTCATCATAA):
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Starts with ATG&amp;nbsp;(has_start = 1)&lt;/li&gt;
&lt;li&gt;Ends with TAA&amp;nbsp;(has_stop = 1)&lt;/li&gt;
&lt;li&gt;Does not contain ATAT&amp;nbsp;(has_atat = 0)&lt;/li&gt;
&lt;li&gt;Contains GGGG&amp;nbsp;(has_ggg = 1)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Sample 5 (TCAGTCAGTCAG):
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Does not match any patterns (all fields = 0)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Sample 6 (ATATCGCGCTAG):
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Does not start with ATG&amp;nbsp;(has_start = 0)&lt;/li&gt;
&lt;li&gt;Ends with TAG&amp;nbsp;(has_stop = 1)&lt;/li&gt;
&lt;li&gt;Starts with ATAT&amp;nbsp;(has_atat = 1)&lt;/li&gt;
&lt;li&gt;Does not contain at least 3 consecutive 'G's (has_ggg = 0)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Sample 7 (CGTATGCGTCGTA):
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Does not start with ATG&amp;nbsp;(has_start = 0)&lt;/li&gt;
&lt;li&gt;Does not end with TAA, &quot;TAG&quot;, or &quot;TGA&quot; (has_stop = 0)&lt;/li&gt;
&lt;li&gt;Does not contain ATAT&amp;nbsp;(has_atat = 0)&lt;/li&gt;
&lt;li&gt;Does not contain at least 3 consecutive 'G's (has_ggg = 0)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Note:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;The result is ordered by sample_id in ascending order&lt;/li&gt;
&lt;li&gt;For each pattern, 1 indicates the pattern is present and 0 indicates it is not present&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1743509373551&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 쿼리를 작성하는 목표, 확인할 지표 : dna_sequence의 글자로 인한 분류 / dna_sequence
# 쿼리 계산 방법 : 1. ATG로 시작하는지, TAA로 끝나는지, ATAT를 포함하는지, GGG를 포함하는지 CASE WHEN 으로 분류 -&amp;gt; 2. 정렬
# 데이터의 기간 : x
# 사용할 테이블 : samples
# JOIN KEY : x
# 데이터 특징 : x
SELECT
    sample_id,
    dna_sequence,
    species,
    # 1
    IF(dna_sequence LIKE('ATG%'), 1, 0) AS has_start,
    IF(dna_sequence LIKE('%TAA') OR dna_sequence LIKE('%TAG') OR dna_sequence LIKE('%TGA'), 1, 0) AS has_stop,
    IF(dna_sequence LIKE('%ATAT%'), 1, 0) AS has_atat,
    IF(dna_sequence REGEXP 'G{3,}', 1, 0) AS has_ggg
FROM samples
# 2
ORDER BY
    sample_id

# REGEXP : 정규 표현식(Regular Expression)을 사용하여 패턴 매칭을 수행하는 연산자
# G{3,} : G(문자), {3,}(최소 3번 이상 반복 = 3개 이상 연속)
# 다만 REGEXP는 대소문자를 구분하지 않음. (ggg도 인식)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>[SQL]</category>
      <category>leetcode</category>
      <category>mysql</category>
      <category>코딩테스트</category>
      <author>indongspace</author>
      <guid isPermaLink="true">https://indong1998.tistory.com/206</guid>
      <comments>https://indong1998.tistory.com/206#entry206comment</comments>
      <pubDate>Tue, 1 Apr 2025 21:11:35 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 코딩 테스트 - Confirmation Rate(LV.Medium)</title>
      <link>https://indong1998.tistory.com/205</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Table:&lt;span&gt;&amp;nbsp;&lt;/span&gt;Signups&lt;/p&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background-color: #f0f0f0; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;+----------------+----------+
| Column Name    | Type     |
+----------------+----------+
| user_id        | int      |
| time_stamp     | datetime |
+----------------+----------+
user_id is the column of unique values for this table.
Each row contains information about the signup time for the user with ID user_id.
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Table:&lt;span&gt;&amp;nbsp;&lt;/span&gt;Confirmations&lt;/p&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background-color: #f0f0f0; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;+----------------+----------+
| Column Name    | Type     |
+----------------+----------+
| user_id        | int      |
| time_stamp     | datetime |
| action         | ENUM     |
+----------------+----------+
(user_id, time_stamp) is the primary key (combination of columns with unique values) for this table.
user_id is a foreign key (reference column) to the Signups table.
action is an ENUM (category) of the type ('confirmed', 'timeout')
Each row of this table indicates that the user with ID user_id requested a confirmation message at time_stamp and that confirmation message was either confirmed ('confirmed') or expired without confirming ('timeout').
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;confirmation rate&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;of a user is the number of&lt;span&gt;&amp;nbsp;&lt;/span&gt;'confirmed'&lt;span&gt;&amp;nbsp;&lt;/span&gt;messages divided by the total number of requested confirmation messages. The confirmation rate of a user that did not request any confirmation messages is&lt;span&gt;&amp;nbsp;&lt;/span&gt;0. Round the confirmation rate to&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;two decimal&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;places.&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Write a solution to find the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;confirmation rate&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;of each user.&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Return the result table in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;any order&lt;/b&gt;.&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The result format is in the following example.&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #f0f0f0; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: 
Signups table:
+---------+---------------------+
| user_id | time_stamp          |
+---------+---------------------+
| 3       | 2020-03-21 10:16:13 |
| 7       | 2020-01-04 13:57:59 |
| 2       | 2020-07-29 23:09:44 |
| 6       | 2020-12-09 10:39:37 |
+---------+---------------------+
Confirmations table:
+---------+---------------------+-----------+
| user_id | time_stamp          | action    |
+---------+---------------------+-----------+
| 3       | 2021-01-06 03:30:46 | timeout   |
| 3       | 2021-07-14 14:00:00 | timeout   |
| 7       | 2021-06-12 11:57:29 | confirmed |
| 7       | 2021-06-13 12:58:28 | confirmed |
| 7       | 2021-06-14 13:59:27 | confirmed |
| 2       | 2021-01-22 00:00:00 | confirmed |
| 2       | 2021-02-28 23:59:59 | timeout   |
+---------+---------------------+-----------+
Output: 
+---------+-------------------+
| user_id | confirmation_rate |
+---------+-------------------+
| 6       | 0.00              |
| 3       | 0.00              |
| 7       | 1.00              |
| 2       | 0.50              |
+---------+-------------------+
Explanation: 
User 6 did not request any confirmation messages. The confirmation rate is 0.
User 3 made 2 requests and both timed out. The confirmation rate is 0.
User 7 made 3 requests and all were confirmed. The confirmation rate is 1.
User 2 made 2 requests where one was confirmed and the other timed out. The confirmation rate is 1 / 2 = 0.5.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1743342645507&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 쿼리를 작성하는 목표, 확인할 지표 : 유저 별로 confirmed의 비율 구하기 / action
# 쿼리 계산 방법 : 1. signup 테이블을 기준으로 join -&amp;gt; 2. 유저별로 total과 confirmed 수 구하기(action 기록이 아예 없거나 confirmed가 없으면 0으로 표시되어야 함) -&amp;gt; 3. confirmed 비율 계산 -&amp;gt; 4. NULL 이면 0
# 데이터의 기간 : x
# 사용할 테이블 : signups, confirmations
# JOIN KEY : user_id
# 데이터 특징 : x
# 1
WITH base AS (
    SELECT
        s.user_id,
        c.action
    FROM signups AS s
    LEFT JOIN confirmations AS c
    ON s.user_id = c.user_id
)
SELECT
    # 3 &amp;amp; 4
    DISTINCT 
        user_id,
        COALESCE(ROUND(confirmed_cnt / total_cnt, 2), 0) AS confirmation_rate
FROM (
    # 2
    SELECT
        user_id,
        SUM(CASE WHEN action IS NOT NULL THEN 1 ELSE 0 END) OVER(PARTITION BY user_id) AS total_cnt,
        SUM(CASE WHEN action = 'confirmed' THEN 1 ELSE 0 END) OVER(PARTITION BY user_id) AS confirmed_cnt
    FROM base
) AS a&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>[SQL]</category>
      <category>leetcode</category>
      <category>mysql</category>
      <category>코딩테스트</category>
      <author>indongspace</author>
      <guid isPermaLink="true">https://indong1998.tistory.com/205</guid>
      <comments>https://indong1998.tistory.com/205#entry205comment</comments>
      <pubDate>Sun, 30 Mar 2025 22:51:52 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 코딩 테스트 - Count Salary Categories(LV.Medium)</title>
      <link>https://indong1998.tistory.com/204</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Table:&lt;span&gt;&amp;nbsp;&lt;/span&gt;Accounts&lt;/p&gt;
&lt;pre class=&quot;pgsql&quot; style=&quot;background-color: #f0f0f0; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;+-------------+------+
| Column Name | Type |
+-------------+------+
| account_id  | int  |
| income      | int  |
+-------------+------+
account_id is the primary key (column with unique values) for this table.
Each row contains information about the monthly income for one bank account.
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Write a solution&amp;nbsp;to calculate the number of bank accounts for each salary category. The salary categories are:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&quot;Low Salary&quot;: All the salaries&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;strictly less&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;than&lt;span&gt;&amp;nbsp;&lt;/span&gt;$20000.&lt;/li&gt;
&lt;li&gt;&quot;Average Salary&quot;: All the salaries in the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;inclusive&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;range&lt;span&gt;&amp;nbsp;&lt;/span&gt;[$20000, $50000].&lt;/li&gt;
&lt;li&gt;&quot;High Salary&quot;: All the salaries&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;strictly greater&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;than&lt;span&gt;&amp;nbsp;&lt;/span&gt;$50000.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The result table&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;must&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;contain all three categories. If there are no accounts in a category,&amp;nbsp;return&amp;nbsp;0.&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Return the result table in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;any order&lt;/b&gt;.&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The&amp;nbsp;result format is in the following example.&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #f0f0f0; color: #262626; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;asciidoc&quot; style=&quot;background-color: #f0f0f0; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: 
Accounts table:
+------------+--------+
| account_id | income |
+------------+--------+
| 3          | 108939 |
| 2          | 12747  |
| 8          | 87709  |
| 6          | 91796  |
+------------+--------+
Output: 
+----------------+----------------+
| category       | accounts_count |
+----------------+----------------+
| Low Salary     | 1              |
| Average Salary | 0              |
| High Salary    | 3              |
+----------------+----------------+
Explanation: 
Low Salary: Account 2.
Average Salary: No accounts.
High Salary: Accounts 3, 6, and 8.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1743074554255&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 쿼리를 작성하는 목표, 확인할 지표 : 범위에 맞게 salary의 카테고리 부여 / income
# 쿼리 계산 방법 : 1. if 문으로 조건에 따라 category부여 -&amp;gt; 2. null일 경우 0 -&amp;gt; 3. union all로 병합
# 데이터의 기간 : x
# 사용할 테이블 : accounts
# JOIN KEY : x
# 데이터 특징 : x
SELECT
    'Low Salary' AS category,
    # 1 &amp;amp; 2
    COALESCE(COUNT(IF(income &amp;lt; 20000, 1, NULL)), 0) AS accounts_count
FROM accounts
# 3
UNION ALL
SELECT
    'Average Salary' AS category,
    # 1 &amp;amp; 2
    COALESCE(COUNT(IF(income BETWEEN 20000 AND 50000, 1, NULL)), 0) AS accounts_count
FROM accounts
# 3
UNION ALL
SELECT
    'High Salary' AS category,
    # 1 &amp;amp; 2
    COALESCE(COUNT(IF(income &amp;gt; 50000, 1, NULL)), 0) AS accounts_count
FROM accounts&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>[SQL]</category>
      <category>leetcode</category>
      <category>mysql</category>
      <category>코딩테스트</category>
      <author>indongspace</author>
      <guid isPermaLink="true">https://indong1998.tistory.com/204</guid>
      <comments>https://indong1998.tistory.com/204#entry204comment</comments>
      <pubDate>Thu, 27 Mar 2025 20:23:09 +0900</pubDate>
    </item>
    <item>
      <title>컨텍스트 필터</title>
      <link>https://indong1998.tistory.com/203</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필터 선택(ALL or 특정 지역)에 따라 차원이 드릴 다운(지역 -&amp;gt; 주)되는 화면을 만들어보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 194730.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;454&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nh7Lp/btsMWCyTvf7/afKI49DCIc2NZVjKUmckb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nh7Lp/btsMWCyTvf7/afKI49DCIc2NZVjKUmckb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nh7Lp/btsMWCyTvf7/afKI49DCIc2NZVjKUmckb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnh7Lp%2FbtsMWCyTvf7%2FafKI49DCIc2NZVjKUmckb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;454&quot; data-filename=&quot;스크린샷 2025-03-26 194730.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;454&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IF ALL이 선택되었을 때 THEN Region ELSE State&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IF 특정지역이 선택되었을 때 THEN State ELSE Region&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Region과 State는 집계되지 않은 Raw Level의 값이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서, IF 바로 뒤에도 &lt;span style=&quot;color: #006dd7;&quot;&gt;집계되지 않은 값&lt;/span&gt;이 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;선택은 곧 &lt;span style=&quot;color: #009a87;&quot;&gt;전체 레코드 수가 달라진다&lt;/span&gt;는 의미이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;종합하면 &lt;span style=&quot;color: #006dd7;&quot;&gt;Fixed LOD&lt;/span&gt;와 &lt;span style=&quot;color: #009a87;&quot;&gt;SUM(Number of Records) &lt;/span&gt;조합사용.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 195648.png&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;327&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uk3XJ/btsMXqqVk8s/88Nz7XBbkp9p9vK140klQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uk3XJ/btsMXqqVk8s/88Nz7XBbkp9p9vK140klQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uk3XJ/btsMXqqVk8s/88Nz7XBbkp9p9vK140klQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fuk3XJ%2FbtsMXqqVk8s%2F88Nz7XBbkp9p9vK140klQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;586&quot; height=&quot;327&quot; data-filename=&quot;스크린샷 2025-03-26 195648.png&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;327&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;{ SUM(Number of Records) } - A&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 지역(데이터셋 전체) 레코드(Row) 수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;{ Fixed[Region] : SUM(Number of Records) } - B&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 지역별 전체 레코드(Row) 수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특징 지역을 선택하여 필터가 적용되면, A와 B는 같아지고, 계산된 필드는 [State]를 반환&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필터가 적용되지 않은 (ALL)이 선택되면, A는 전체 데이터셋의 행의 개수 , B는 각 지역별 행의 개수(총 4개의 값)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이므로 계산된 필드는 [Region]을 반환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 213817.png&quot; data-origin-width=&quot;1638&quot; data-origin-height=&quot;876&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blWPSn/btsMX5s3IWJ/MGx0xJMjpBeZWQbwUmH4v0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blWPSn/btsMX5s3IWJ/MGx0xJMjpBeZWQbwUmH4v0/img.png&quot; data-alt=&quot;준비&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blWPSn/btsMX5s3IWJ/MGx0xJMjpBeZWQbwUmH4v0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblWPSn%2FbtsMX5s3IWJ%2FMGx0xJMjpBeZWQbwUmH4v0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1638&quot; height=&quot;876&quot; data-filename=&quot;스크린샷 2025-03-26 213817.png&quot; data-origin-width=&quot;1638&quot; data-origin-height=&quot;876&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;준비&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 213901.png&quot; data-origin-width=&quot;305&quot; data-origin-height=&quot;478&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpX2Ps/btsMWITqd32/z6dBuA61eTbPHIVNdqpt3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpX2Ps/btsMWITqd32/z6dBuA61eTbPHIVNdqpt3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpX2Ps/btsMWITqd32/z6dBuA61eTbPHIVNdqpt3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpX2Ps%2FbtsMWITqd32%2Fz6dBuA61eTbPHIVNdqpt3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;281&quot; height=&quot;440&quot; data-filename=&quot;스크린샷 2025-03-26 213901.png&quot; data-origin-width=&quot;305&quot; data-origin-height=&quot;478&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 214108.png&quot; data-origin-width=&quot;1470&quot; data-origin-height=&quot;782&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bllpg6/btsMW7FeO2F/7xQsoE5NmNCWkgrH18hrdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bllpg6/btsMW7FeO2F/7xQsoE5NmNCWkgrH18hrdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bllpg6/btsMW7FeO2F/7xQsoE5NmNCWkgrH18hrdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbllpg6%2FbtsMW7FeO2F%2F7xQsoE5NmNCWkgrH18hrdk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1470&quot; height=&quot;782&quot; data-filename=&quot;스크린샷 2025-03-26 214108.png&quot; data-origin-width=&quot;1470&quot; data-origin-height=&quot;782&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Central이라는 특정 한 지역만 선택되었는데도 주 레벨로 나오지 않는 것을 확인할 수 있다.(= Region 레벨에 머물러있다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Region or State를 행에, 수량을 열에, 지역을 필터로 올려서 만들었는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필터가 드릴 다운 방식으로 작동하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계산된 필드를 다시 한 번 살펴보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 195648.png&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;327&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TVSkK/btsMW9bWNFm/2XRNRyLm2kGaI9oZUDkkT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TVSkK/btsMW9bWNFm/2XRNRyLm2kGaI9oZUDkkT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TVSkK/btsMW9bWNFm/2XRNRyLm2kGaI9oZUDkkT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTVSkK%2FbtsMW9bWNFm%2F2XRNRyLm2kGaI9oZUDkkT0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;586&quot; height=&quot;327&quot; data-filename=&quot;스크린샷 2025-03-26 195648.png&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;327&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 필드가 제대로 작동하기 위한 가장 중요한 조건은, 사용자가 특정한 지역을 선택했을 때(= 지역 필터가 적용되었을 때)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A, B 두 개의 Fixed LOD가 필터에 의해 값이 바뀌어야만 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 Fixed LOD는 차원 필터보다 적용 우선 순위가 높다.(= 필터의 영향을 받지 않는다는 의미.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Fixed LOD를 제어하기 위해서, Fixed LOD보다 우선 순위가 낮은 차원 필터를 Fixed LOD보다 먼저 작동하는 '컨텍스트 필터'로 만들면 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 214803.png&quot; data-origin-width=&quot;321&quot; data-origin-height=&quot;344&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kLWb5/btsMWJkqC0X/JxNq1RwKRTxtl2QieCqLw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kLWb5/btsMWJkqC0X/JxNq1RwKRTxtl2QieCqLw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kLWb5/btsMWJkqC0X/JxNq1RwKRTxtl2QieCqLw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkLWb5%2FbtsMWJkqC0X%2FJxNq1RwKRTxtl2QieCqLw0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;321&quot; height=&quot;344&quot; data-filename=&quot;스크린샷 2025-03-26 214803.png&quot; data-origin-width=&quot;321&quot; data-origin-height=&quot;344&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 214835.png&quot; data-origin-width=&quot;1641&quot; data-origin-height=&quot;884&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WWUwC/btsMYyuLkc0/mwHKfkNOCuQd27jBdgcFX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WWUwC/btsMYyuLkc0/mwHKfkNOCuQd27jBdgcFX0/img.png&quot; data-alt=&quot;result&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WWUwC/btsMYyuLkc0/mwHKfkNOCuQd27jBdgcFX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWWUwC%2FbtsMYyuLkc0%2FmwHKfkNOCuQd27jBdgcFX0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1641&quot; height=&quot;884&quot; data-filename=&quot;스크린샷 2025-03-26 214835.png&quot; data-origin-width=&quot;1641&quot; data-origin-height=&quot;884&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;result&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;화면이 주 레벨로 드릴다운 된 것을 확인 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;※ 차원 필터는 작동 우선순위에 따라서 Fixed LOD를 필터링 할 수 없었지만, 컨텍스트 필터는 Fixed LOD에 앞서 적용된다는 것을 알 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Fixed LOD 결과를 필터링할 때에는 '컨텍스트 필터'를 활용하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공부내용 :&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.inflearn.com/course/%ED%83%9C%EB%B8%94%EB%A1%9C-%EC%A4%91%EA%B8%89&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.inflearn.com/course/%ED%83%9C%EB%B8%94%EB%A1%9C-%EC%A4%91%EA%B8%89&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1742993497948&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;[지금 무료]태블로 레벨UP 강의 | VizLab - 인프런&quot; data-og-description=&quot;VizLab | ,   강의소개 강의를 만들게된 계기가 어떻게 되시나요? 왜 이 강의를 만들게 되신거죠?저는 2015년 말에 태블로라는 툴을 처음 접하게 되었습니다. 당시에도 한국에 태블로가 소개되지 &quot; data-og-host=&quot;www.inflearn.com&quot; data-og-source-url=&quot;https://www.inflearn.com/course/%ED%83%9C%EB%B8%94%EB%A1%9C-%EC%A4%91%EA%B8%89&quot; data-og-url=&quot;https://www.inflearn.com/course/%ED%83%9C%EB%B8%94%EB%A1%9C-%EC%A4%91%EA%B8%89&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bhBG0T/hyYupVeV1b/Cc8XhEbkj0h20B4mhreZmK/img.png?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/BugB7/hyYyJRzZnD/pirNFdZwWQeasadfPcbKtk/img.png?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/fzeNN/hyYxRoYrov/KvSwaNETndKKa4MJG8g0F0/img.png?width=1252&amp;amp;height=1856&amp;amp;face=0_0_1252_1856&quot;&gt;&lt;a href=&quot;https://www.inflearn.com/course/%ED%83%9C%EB%B8%94%EB%A1%9C-%EC%A4%91%EA%B8%89&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.inflearn.com/course/%ED%83%9C%EB%B8%94%EB%A1%9C-%EC%A4%91%EA%B8%89&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bhBG0T/hyYupVeV1b/Cc8XhEbkj0h20B4mhreZmK/img.png?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/BugB7/hyYyJRzZnD/pirNFdZwWQeasadfPcbKtk/img.png?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/fzeNN/hyYxRoYrov/KvSwaNETndKKa4MJG8g0F0/img.png?width=1252&amp;amp;height=1856&amp;amp;face=0_0_1252_1856');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[지금 무료]태블로 레벨UP 강의 | VizLab - 인프런&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;VizLab | ,   강의소개 강의를 만들게된 계기가 어떻게 되시나요? 왜 이 강의를 만들게 되신거죠?저는 2015년 말에 태블로라는 툴을 처음 접하게 되었습니다. 당시에도 한국에 태블로가 소개되지&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.inflearn.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>[Tableau]</category>
      <category>tableau</category>
      <category>vizlab</category>
      <category>시각화</category>
      <category>인프런</category>
      <author>indongspace</author>
      <guid isPermaLink="true">https://indong1998.tistory.com/203</guid>
      <comments>https://indong1998.tistory.com/203#entry203comment</comments>
      <pubDate>Wed, 26 Mar 2025 21:52:09 +0900</pubDate>
    </item>
    <item>
      <title>액션(차원) 필터와 FIXED LOD</title>
      <link>https://indong1998.tistory.com/202</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주 별 매출을 표현한 지도를 통해 카테고리별 수익률을 필터링하는 대시보드를 만들기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 192037.png&quot; data-origin-width=&quot;1646&quot; data-origin-height=&quot;870&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/daE5VI/btsMW7ryyhO/xp9zJc1WMOYPxrwmSARdgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/daE5VI/btsMW7ryyhO/xp9zJc1WMOYPxrwmSARdgK/img.png&quot; data-alt=&quot;준비 (1)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/daE5VI/btsMW7ryyhO/xp9zJc1WMOYPxrwmSARdgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdaE5VI%2FbtsMW7ryyhO%2Fxp9zJc1WMOYPxrwmSARdgK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1646&quot; height=&quot;870&quot; data-filename=&quot;스크린샷 2025-03-26 192037.png&quot; data-origin-width=&quot;1646&quot; data-origin-height=&quot;870&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;준비 (1)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 192154.png&quot; data-origin-width=&quot;1641&quot; data-origin-height=&quot;875&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dodici/btsMWDYQLJs/tDbK2zdXTXqJbTQXMDg0x1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dodici/btsMWDYQLJs/tDbK2zdXTXqJbTQXMDg0x1/img.png&quot; data-alt=&quot;준비 (2)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dodici/btsMWDYQLJs/tDbK2zdXTXqJbTQXMDg0x1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdodici%2FbtsMWDYQLJs%2FtDbK2zdXTXqJbTQXMDg0x1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1641&quot; height=&quot;875&quot; data-filename=&quot;스크린샷 2025-03-26 192154.png&quot; data-origin-width=&quot;1641&quot; data-origin-height=&quot;875&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;준비 (2)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 192321.png&quot; data-origin-width=&quot;484&quot; data-origin-height=&quot;616&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QPaSS/btsMX4gE2pT/oEHRyHDzVqnS1Fl2kdk8Nk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QPaSS/btsMX4gE2pT/oEHRyHDzVqnS1Fl2kdk8Nk/img.png&quot; data-alt=&quot;참조선 추가&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QPaSS/btsMX4gE2pT/oEHRyHDzVqnS1Fl2kdk8Nk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQPaSS%2FbtsMX4gE2pT%2FoEHRyHDzVqnS1Fl2kdk8Nk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;425&quot; height=&quot;541&quot; data-filename=&quot;스크린샷 2025-03-26 192321.png&quot; data-origin-width=&quot;484&quot; data-origin-height=&quot;616&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;참조선 추가&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 192447.png&quot; data-origin-width=&quot;999&quot; data-origin-height=&quot;812&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XyoyU/btsMYO46z7b/bQnQRTuRzNn4atWUG8IZx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XyoyU/btsMYO46z7b/bQnQRTuRzNn4atWUG8IZx0/img.png&quot; data-alt=&quot;대시보드에 시트를 올린다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XyoyU/btsMYO46z7b/bQnQRTuRzNn4atWUG8IZx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXyoyU%2FbtsMYO46z7b%2FbQnQRTuRzNn4atWUG8IZx0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;999&quot; height=&quot;812&quot; data-filename=&quot;스크린샷 2025-03-26 192447.png&quot; data-origin-width=&quot;999&quot; data-origin-height=&quot;812&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;대시보드에 시트를 올린다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;액션을 걸어줘야 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 192556.png&quot; data-origin-width=&quot;357&quot; data-origin-height=&quot;383&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8JoAE/btsMXpS6hMq/dkidzXCZDz6C4lkEcgpuX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8JoAE/btsMXpS6hMq/dkidzXCZDz6C4lkEcgpuX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8JoAE/btsMXpS6hMq/dkidzXCZDz6C4lkEcgpuX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8JoAE%2FbtsMXpS6hMq%2FdkidzXCZDz6C4lkEcgpuX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;357&quot; height=&quot;383&quot; data-filename=&quot;스크린샷 2025-03-26 192556.png&quot; data-origin-width=&quot;357&quot; data-origin-height=&quot;383&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 192710.png&quot; data-origin-width=&quot;813&quot; data-origin-height=&quot;902&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8KLD4/btsMWJradie/nTeeOEdCMyO7mZSPhRAd4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8KLD4/btsMWJradie/nTeeOEdCMyO7mZSPhRAd4k/img.png&quot; data-alt=&quot;필터 생성&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8KLD4/btsMWJradie/nTeeOEdCMyO7mZSPhRAd4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8KLD4%2FbtsMWJradie%2FnTeeOEdCMyO7mZSPhRAd4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;601&quot; height=&quot;667&quot; data-filename=&quot;스크린샷 2025-03-26 192710.png&quot; data-origin-width=&quot;813&quot; data-origin-height=&quot;902&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;필터 생성&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 192754.png&quot; data-origin-width=&quot;861&quot; data-origin-height=&quot;803&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Rrf4t/btsMW7E8PqD/jEjMnzudHGvhJZy26HKuGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Rrf4t/btsMW7E8PqD/jEjMnzudHGvhJZy26HKuGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Rrf4t/btsMW7E8PqD/jEjMnzudHGvhJZy26HKuGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRrf4t%2FbtsMW7E8PqD%2FjEjMnzudHGvhJZy26HKuGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;861&quot; height=&quot;803&quot; data-filename=&quot;스크린샷 2025-03-26 192754.png&quot; data-origin-width=&quot;861&quot; data-origin-height=&quot;803&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;National Level의 수치가 Texas 주에 따라서 같이 변하고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제의 원인은&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Profit Ratio가 집계 계산으로, 액션 필터보다 적용 우선 순위가 낮기 때문이다. 필터가 집계보다 앞서 적용되는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇기 때문에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Profit Ratio라는 단순 집계 계산을, 액션 필터보다 먼저 적용되어 액션 필터의 영향을 받지 않는 Fixed LOD로 만들어주면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;액션 필터보다 작동 우선순위가 높은 Fixed LOD 참조선을 넣으면, 바 차트는 필터링되지만 참조선은 필터링되지 않는 화면을 만들 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 193525.png&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;322&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mXZ6c/btsMW6MYDte/HK40VJaKZZCJ7NCqemFtKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mXZ6c/btsMW6MYDte/HK40VJaKZZCJ7NCqemFtKk/img.png&quot; data-alt=&quot;Fixed LOD 생성&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mXZ6c/btsMW6MYDte/HK40VJaKZZCJ7NCqemFtKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmXZ6c%2FbtsMW6MYDte%2FHK40VJaKZZCJ7NCqemFtKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;582&quot; height=&quot;322&quot; data-filename=&quot;스크린샷 2025-03-26 193525.png&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;322&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Fixed LOD 생성&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조선으로 활용하기 위해서는 이 필드가 화면의 View 안으로 들어가 있어야 한다.(마크카드 -&amp;gt; 세부정보)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 193753.png&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;618&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kN0We/btsMX50O36g/xTNmeTGqvrN9ZPKa0RWyDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kN0We/btsMX50O36g/xTNmeTGqvrN9ZPKa0RWyDk/img.png&quot; data-alt=&quot;참조선 삽입&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kN0We/btsMX50O36g/xTNmeTGqvrN9ZPKa0RWyDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkN0We%2FbtsMX50O36g%2FxTNmeTGqvrN9ZPKa0RWyDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;480&quot; height=&quot;618&quot; data-filename=&quot;스크린샷 2025-03-26 193753.png&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;618&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;참조선 삽입&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 193921.png&quot; data-origin-width=&quot;556&quot; data-origin-height=&quot;552&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nliYJ/btsMXqdoqkB/oEtjoFlw6qAEieOKXygvKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nliYJ/btsMXqdoqkB/oEtjoFlw6qAEieOKXygvKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nliYJ/btsMXqdoqkB/oEtjoFlw6qAEieOKXygvKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnliYJ%2FbtsMXqdoqkB%2FoEtjoFlw6qAEieOKXygvKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;556&quot; height=&quot;552&quot; data-filename=&quot;스크린샷 2025-03-26 193921.png&quot; data-origin-width=&quot;556&quot; data-origin-height=&quot;552&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서식 변경까지 해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대시보드로 넘어간다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 194018.png&quot; data-origin-width=&quot;882&quot; data-origin-height=&quot;790&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Lx8jx/btsMWDLjCEZ/iStV7NdQPjKWWdvqMt41S0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Lx8jx/btsMWDLjCEZ/iStV7NdQPjKWWdvqMt41S0/img.png&quot; data-alt=&quot;result&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Lx8jx/btsMWDLjCEZ/iStV7NdQPjKWWdvqMt41S0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLx8jx%2FbtsMWDLjCEZ%2FiStV7NdQPjKWWdvqMt41S0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;882&quot; height=&quot;790&quot; data-filename=&quot;스크린샷 2025-03-26 194018.png&quot; data-origin-width=&quot;882&quot; data-origin-height=&quot;790&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;result&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;※ 비교 기준선 등 (액션) 필터에 영향을 받지 않는 값이 필요할 때에는 Fixed LOD를 활용하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공부내용 :&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.inflearn.com/course/%ED%83%9C%EB%B8%94%EB%A1%9C-%EC%A4%91%EA%B8%89&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.inflearn.com/course/%ED%83%9C%EB%B8%94%EB%A1%9C-%EC%A4%91%EA%B8%89&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1742985771291&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;[지금 무료]태블로 레벨UP 강의 | VizLab - 인프런&quot; data-og-description=&quot;VizLab | ,   강의소개 강의를 만들게된 계기가 어떻게 되시나요? 왜 이 강의를 만들게 되신거죠?저는 2015년 말에 태블로라는 툴을 처음 접하게 되었습니다. 당시에도 한국에 태블로가 소개되지 &quot; data-og-host=&quot;www.inflearn.com&quot; data-og-source-url=&quot;https://www.inflearn.com/course/%ED%83%9C%EB%B8%94%EB%A1%9C-%EC%A4%91%EA%B8%89&quot; data-og-url=&quot;https://www.inflearn.com/course/%ED%83%9C%EB%B8%94%EB%A1%9C-%EC%A4%91%EA%B8%89&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bhBG0T/hyYupVeV1b/Cc8XhEbkj0h20B4mhreZmK/img.png?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/BugB7/hyYyJRzZnD/pirNFdZwWQeasadfPcbKtk/img.png?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/fzeNN/hyYxRoYrov/KvSwaNETndKKa4MJG8g0F0/img.png?width=1252&amp;amp;height=1856&amp;amp;face=0_0_1252_1856&quot;&gt;&lt;a href=&quot;https://www.inflearn.com/course/%ED%83%9C%EB%B8%94%EB%A1%9C-%EC%A4%91%EA%B8%89&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.inflearn.com/course/%ED%83%9C%EB%B8%94%EB%A1%9C-%EC%A4%91%EA%B8%89&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bhBG0T/hyYupVeV1b/Cc8XhEbkj0h20B4mhreZmK/img.png?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/BugB7/hyYyJRzZnD/pirNFdZwWQeasadfPcbKtk/img.png?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/fzeNN/hyYxRoYrov/KvSwaNETndKKa4MJG8g0F0/img.png?width=1252&amp;amp;height=1856&amp;amp;face=0_0_1252_1856');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[지금 무료]태블로 레벨UP 강의 | VizLab - 인프런&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;VizLab | ,   강의소개 강의를 만들게된 계기가 어떻게 되시나요? 왜 이 강의를 만들게 되신거죠?저는 2015년 말에 태블로라는 툴을 처음 접하게 되었습니다. 당시에도 한국에 태블로가 소개되지&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.inflearn.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>[Tableau]</category>
      <category>tableau</category>
      <category>vizlab</category>
      <category>시각화</category>
      <category>인프런</category>
      <author>indongspace</author>
      <guid isPermaLink="true">https://indong1998.tistory.com/202</guid>
      <comments>https://indong1998.tistory.com/202#entry202comment</comments>
      <pubDate>Wed, 26 Mar 2025 19:43:24 +0900</pubDate>
    </item>
    <item>
      <title>테이블 계산 필터 : LOOKUP</title>
      <link>https://indong1998.tistory.com/201</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;날짜 차원 필터는 LAST 함수로 해결할 수 있는데, 문자열 차원 필터는 어떻게 테이블 계산 필터로 바꿀 수 있을까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 182027.png&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;534&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjK8uP/btsMWtaVGHN/hkjf7B9AZF0VmlcBJ3mgy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjK8uP/btsMWtaVGHN/hkjf7B9AZF0VmlcBJ3mgy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjK8uP/btsMWtaVGHN/hkjf7B9AZF0VmlcBJ3mgy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjK8uP%2FbtsMWtaVGHN%2Fhkjf7B9AZF0VmlcBJ3mgy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;531&quot; height=&quot;469&quot; data-filename=&quot;스크린샷 2025-03-26 182027.png&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;534&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고객별 매출 금액과 그에 따른 순위(테이블 계산)가 나와있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 182108.png&quot; data-origin-width=&quot;611&quot; data-origin-height=&quot;212&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0v93n/btsMWG809XT/SUKymkK44cse5b39GURKCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0v93n/btsMWG809XT/SUKymkK44cse5b39GURKCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0v93n/btsMWG809XT/SUKymkK44cse5b39GURKCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0v93n%2FbtsMWG809XT%2FSUKymkK44cse5b39GURKCK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;611&quot; height=&quot;212&quot; data-filename=&quot;스크린샷 2025-03-26 182108.png&quot; data-origin-width=&quot;611&quot; data-origin-height=&quot;212&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필터링을 통해 10명의 고객을 무작위로 뽑아 보니, 순위가 다시 계산된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필터(고객)가 먼저 적용된 후 테이블 계산(순위)이 나중에 이루어지기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 182254.png&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;214&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dLW3He/btsMWIyWkIJ/PZ27lkuoKgWHrrWCidmCj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dLW3He/btsMWIyWkIJ/PZ27lkuoKgWHrrWCidmCj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dLW3He/btsMWIyWkIJ/PZ27lkuoKgWHrrWCidmCj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdLW3He%2FbtsMWIyWkIJ%2FPZ27lkuoKgWHrrWCidmCj0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;606&quot; height=&quot;214&quot; data-filename=&quot;스크린샷 2025-03-26 182254.png&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;214&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필터가 들어가더라도 이렇게 전체 범위에서의 순위를 그대로 쓰려면 어떻게 해야 할까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방법은 '차원 필터'를 '테이블 계산 필터'로 변경하면 된다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 182608.png&quot; data-origin-width=&quot;1467&quot; data-origin-height=&quot;873&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ubbv7/btsMWmv9kq6/Qv2tkbMBCkyyjc0EDwHu60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ubbv7/btsMWmv9kq6/Qv2tkbMBCkyyjc0EDwHu60/img.png&quot; data-alt=&quot;준비&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ubbv7/btsMWmv9kq6/Qv2tkbMBCkyyjc0EDwHu60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fubbv7%2FbtsMWmv9kq6%2FQv2tkbMBCkyyjc0EDwHu60%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1467&quot; height=&quot;873&quot; data-filename=&quot;스크린샷 2025-03-26 182608.png&quot; data-origin-width=&quot;1467&quot; data-origin-height=&quot;873&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;준비&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 182734.png&quot; data-origin-width=&quot;1460&quot; data-origin-height=&quot;242&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjT4O8/btsMX1jK0wG/nTlcYBcTr5fS198ErwDjO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjT4O8/btsMX1jK0wG/nTlcYBcTr5fS198ErwDjO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjT4O8/btsMX1jK0wG/nTlcYBcTr5fS198ErwDjO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjT4O8%2FbtsMX1jK0wG%2FnTlcYBcTr5fS198ErwDjO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1460&quot; height=&quot;242&quot; data-filename=&quot;스크린샷 2025-03-26 182734.png&quot; data-origin-width=&quot;1460&quot; data-origin-height=&quot;242&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Customer Name에 필터를 걸어 랜덤으로 5명만 뽑았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필터링이 먼저 일어나고 나서 Rank함수가 작동한 것을 볼 수 있다.(= 5명 내에서 순위를 매김)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 사람들이 가지고 있는, 전체범위에서의 순위 그대로 표현하기 위해 필터 카드에 있는 Customer Name을 테이블 계산 필터로 바꿔줘야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 183140.png&quot; data-origin-width=&quot;584&quot; data-origin-height=&quot;322&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lfCaD/btsMXzacrsL/4HKWcrMlBFIGw6cQ31c9L0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lfCaD/btsMXzacrsL/4HKWcrMlBFIGw6cQ31c9L0/img.png&quot; data-alt=&quot;테이블 계산 생성&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lfCaD/btsMXzacrsL/4HKWcrMlBFIGw6cQ31c9L0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlfCaD%2FbtsMXzacrsL%2F4HKWcrMlBFIGw6cQ31c9L0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;584&quot; height=&quot;322&quot; data-filename=&quot;스크린샷 2025-03-26 183140.png&quot; data-origin-width=&quot;584&quot; data-origin-height=&quot;322&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;테이블 계산 생성&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;= 고객명이 나열되어 있는 리스트에서, 자기 자신의 줄에 있는 그 값, 결국 선택된 자기 자신을 가져와라&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 183311.png&quot; data-origin-width=&quot;575&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d2s60F/btsMX6rR2LD/OFYV9Jl0jegjwlk1F0SC0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d2s60F/btsMX6rR2LD/OFYV9Jl0jegjwlk1F0SC0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d2s60F/btsMX6rR2LD/OFYV9Jl0jegjwlk1F0SC0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd2s60F%2FbtsMX6rR2LD%2FOFYV9Jl0jegjwlk1F0SC0K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;623&quot; data-filename=&quot;스크린샷 2025-03-26 183311.png&quot; data-origin-width=&quot;575&quot; data-origin-height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필터로 올리고 모두 선택&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Customer Name 차원 필터를 뺀다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 183520.png&quot; data-origin-width=&quot;1628&quot; data-origin-height=&quot;410&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KeswP/btsMW840Qmj/InBdqjLOgK1VRNOV1oY7Yk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KeswP/btsMW840Qmj/InBdqjLOgK1VRNOV1oY7Yk/img.png&quot; data-alt=&quot;result&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KeswP/btsMW840Qmj/InBdqjLOgK1VRNOV1oY7Yk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKeswP%2FbtsMW840Qmj%2FInBdqjLOgK1VRNOV1oY7Yk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1628&quot; height=&quot;410&quot; data-filename=&quot;스크린샷 2025-03-26 183520.png&quot; data-origin-width=&quot;1628&quot; data-origin-height=&quot;410&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;result&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 범위에서의 순위가 매겨진 것을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열 차원 필터의 경우에는 'LOOKUP(ATTR([문자열]), 0)' 이 구조로 생성해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Customer Name 앞에 ATTR을 사용하는 이유는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블 계산 안에는 항상 집계값이 들어가야 하는데 차원에 대한 집계값을 만들어주기 위해서이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나아가서,&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 183928.png&quot; data-origin-width=&quot;596&quot; data-origin-height=&quot;475&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yjPhA/btsMXaV29y2/PUgECKYPfKJc8b1JyMyhSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yjPhA/btsMXaV29y2/PUgECKYPfKJc8b1JyMyhSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yjPhA/btsMXaV29y2/PUgECKYPfKJc8b1JyMyhSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyjPhA%2FbtsMXaV29y2%2FPUgECKYPfKJc8b1JyMyhSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;596&quot; height=&quot;475&quot; data-filename=&quot;스크린샷 2025-03-26 183928.png&quot; data-origin-width=&quot;596&quot; data-origin-height=&quot;475&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고객 구분(Segment)으로 필터링했을 때에도 순위를 유지시키고 싶다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VLOD에 포함되어 있지 않던 고객 구분 에 대하여 테이블 계산 필터를 만드는 작업도 동일하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 184249.png&quot; data-origin-width=&quot;583&quot; data-origin-height=&quot;328&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lH8PJ/btsMX6Mcd21/aisyHJEffzqMaMf9Nry9Mk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lH8PJ/btsMX6Mcd21/aisyHJEffzqMaMf9Nry9Mk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lH8PJ/btsMX6Mcd21/aisyHJEffzqMaMf9Nry9Mk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlH8PJ%2FbtsMX6Mcd21%2FaisyHJEffzqMaMf9Nry9Mk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;583&quot; height=&quot;328&quot; data-filename=&quot;스크린샷 2025-03-26 184249.png&quot; data-origin-width=&quot;583&quot; data-origin-height=&quot;328&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Segment 리스트에서 내가 선택한 줄(0)에 있는 그 값을 가지고 오라는 것.(=자기 자신의 값)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 184413.png&quot; data-origin-width=&quot;574&quot; data-origin-height=&quot;695&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/02u8g/btsMX3PsDJW/05wTTDPrfjrMJOybMynLoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/02u8g/btsMX3PsDJW/05wTTDPrfjrMJOybMynLoK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/02u8g/btsMX3PsDJW/05wTTDPrfjrMJOybMynLoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F02u8g%2FbtsMX3PsDJW%2F05wTTDPrfjrMJOybMynLoK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;502&quot; height=&quot;608&quot; data-filename=&quot;스크린샷 2025-03-26 184413.png&quot; data-origin-width=&quot;574&quot; data-origin-height=&quot;695&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필터로 올리고 전체 선택&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-03-26 184510.png&quot; data-origin-width=&quot;1640&quot; data-origin-height=&quot;868&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uFJjp/btsMXm9Nl6v/0tZWAJw8npSTAJTMxWiRE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uFJjp/btsMXm9Nl6v/0tZWAJw8npSTAJTMxWiRE1/img.png&quot; data-alt=&quot;result&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uFJjp/btsMXm9Nl6v/0tZWAJw8npSTAJTMxWiRE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuFJjp%2FbtsMXm9Nl6v%2F0tZWAJw8npSTAJTMxWiRE1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1640&quot; height=&quot;868&quot; data-filename=&quot;스크린샷 2025-03-26 184510.png&quot; data-origin-width=&quot;1640&quot; data-origin-height=&quot;868&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;result&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 범위에서의 순위를 그대로 유지하는 것을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Q. 지역(Region)에 대해서 테이블 계산 필터를 만들어 보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공부내용 :&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.inflearn.com/course/%ED%83%9C%EB%B8%94%EB%A1%9C-%EC%A4%91%EA%B8%89&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.inflearn.com/course/%ED%83%9C%EB%B8%94%EB%A1%9C-%EC%A4%91%EA%B8%89&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1742982519125&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;[지금 무료]태블로 레벨UP 강의 | VizLab - 인프런&quot; data-og-description=&quot;VizLab | ,   강의소개 강의를 만들게된 계기가 어떻게 되시나요? 왜 이 강의를 만들게 되신거죠?저는 2015년 말에 태블로라는 툴을 처음 접하게 되었습니다. 당시에도 한국에 태블로가 소개되지 &quot; data-og-host=&quot;www.inflearn.com&quot; data-og-source-url=&quot;https://www.inflearn.com/course/%ED%83%9C%EB%B8%94%EB%A1%9C-%EC%A4%91%EA%B8%89&quot; data-og-url=&quot;https://www.inflearn.com/course/%ED%83%9C%EB%B8%94%EB%A1%9C-%EC%A4%91%EA%B8%89&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bhBG0T/hyYupVeV1b/Cc8XhEbkj0h20B4mhreZmK/img.png?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/BugB7/hyYyJRzZnD/pirNFdZwWQeasadfPcbKtk/img.png?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/fzeNN/hyYxRoYrov/KvSwaNETndKKa4MJG8g0F0/img.png?width=1252&amp;amp;height=1856&amp;amp;face=0_0_1252_1856&quot;&gt;&lt;a href=&quot;https://www.inflearn.com/course/%ED%83%9C%EB%B8%94%EB%A1%9C-%EC%A4%91%EA%B8%89&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.inflearn.com/course/%ED%83%9C%EB%B8%94%EB%A1%9C-%EC%A4%91%EA%B8%89&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bhBG0T/hyYupVeV1b/Cc8XhEbkj0h20B4mhreZmK/img.png?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/BugB7/hyYyJRzZnD/pirNFdZwWQeasadfPcbKtk/img.png?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/fzeNN/hyYxRoYrov/KvSwaNETndKKa4MJG8g0F0/img.png?width=1252&amp;amp;height=1856&amp;amp;face=0_0_1252_1856');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[지금 무료]태블로 레벨UP 강의 | VizLab - 인프런&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;VizLab | ,   강의소개 강의를 만들게된 계기가 어떻게 되시나요? 왜 이 강의를 만들게 되신거죠?저는 2015년 말에 태블로라는 툴을 처음 접하게 되었습니다. 당시에도 한국에 태블로가 소개되지&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.inflearn.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>[Tableau]</category>
      <category>tableau</category>
      <category>vizlab</category>
      <category>시각화</category>
      <category>인프런</category>
      <author>indongspace</author>
      <guid isPermaLink="true">https://indong1998.tistory.com/201</guid>
      <comments>https://indong1998.tistory.com/201#entry201comment</comments>
      <pubDate>Wed, 26 Mar 2025 18:48:58 +0900</pubDate>
    </item>
  </channel>
</rss>