<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Calculate median over grouped data in App Development</title>
    <link>https://community.qlik.com/t5/App-Development/Calculate-median-over-grouped-data/m-p/2434935#M96940</link>
    <description>&lt;P&gt;It may be possible trying to do this with concat() and generating a long list of values on the fly, but it feels like performance and scalability might lag trying to do this all in the UI, and to me the approach feels like a stretch.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I think everything works way better if you uncompress your data and create a data set like this:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="JonnyPoole_0-1711507663606.png" style="width: 400px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/162786iE7885A8679BAB653/image-size/medium?v=v2&amp;amp;px=400" role="button" title="JonnyPoole_0-1711507663606.png" alt="JonnyPoole_0-1711507663606.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Then its easy to apply the median() function&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="JonnyPoole_1-1711507711244.png" style="width: 400px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/162787iC65A559D2AC1D487/image-size/medium?v=v2&amp;amp;px=400" role="button" title="JonnyPoole_1-1711507711244.png" alt="JonnyPoole_1-1711507711244.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To uncompress the data, here is a script that duplicates the data row by row as determined by the counter value. Also attached is the XLXS I used to generate this.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;CompressedData:&lt;/DIV&gt;
&lt;DIV&gt;LOAD&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; RecordID,&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; Price,&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; Counter&lt;/DIV&gt;
&lt;DIV&gt;FROM [lib://Community Answers:DataFiles/2434655.xlsx]&lt;/DIV&gt;
&lt;DIV&gt;(ooxml, embedded labels, table is Sheet1);&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;LET vNumRows=NoOfRows('CompressedData')-1;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;FOR row = 0 TO $(vNumRows)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt; LET vRowsToGenerate=PEEK('Counter',$(row),'CompressedData');&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; UnCompressedData:&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; LOAD&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; PEEK('RecordID',$(row),'CompressedData') AS RecordID,&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; PEEK('Price',$(row),'CompressedData') AS Price&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt; AutoGenerate $(vRowsToGenerate);&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;NEXT row&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;DROP TABLE CompressedData;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 27 Mar 2024 02:49:37 GMT</pubDate>
    <dc:creator>JonnyPoole</dc:creator>
    <dc:date>2024-03-27T02:49:37Z</dc:date>
    <item>
      <title>Calculate median over grouped data</title>
      <link>https://community.qlik.com/t5/App-Development/Calculate-median-over-grouped-data/m-p/2434655#M96910</link>
      <description>&lt;P&gt;Hello all,&lt;/P&gt;
&lt;P&gt;I'm struggling to write a formula in a KPI chart which will calculate the correct median for the following dataset:&lt;/P&gt;
&lt;TABLE border="1" width="100%"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="33.333333333333336%" height="24px"&gt;RecordID&lt;/TD&gt;
&lt;TD width="33.333333333333336%" height="24px"&gt;Price&lt;/TD&gt;
&lt;TD width="33.333333333333336%" height="24px"&gt;Counter&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="33.333333333333336%" height="24px"&gt;100&lt;/TD&gt;
&lt;TD width="33.333333333333336%" height="24px"&gt;200&lt;/TD&gt;
&lt;TD width="33.333333333333336%" height="24px"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="33.333333333333336%" height="24px"&gt;101&lt;/TD&gt;
&lt;TD width="33.333333333333336%" height="24px"&gt;250&lt;/TD&gt;
&lt;TD width="33.333333333333336%" height="24px"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="33.333333333333336%" height="24px"&gt;102&lt;/TD&gt;
&lt;TD width="33.333333333333336%" height="24px"&gt;300&lt;/TD&gt;
&lt;TD width="33.333333333333336%" height="24px"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If we use the simple Median(Price) it will give us the result of 250 but the correct value should be 275 because the "PriceCount" column tells us how many times this price exists in the data. Tried to write something like this but it does not return a correct value:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;Median(aggr(if(RangeSum(Above(Counter)) &amp;lt;= Count(total ID) / 2
        and
        RangeSum(Above(Counter)) + Counter &amp;gt;= Count(total ID) / 2,Price),ID))&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Could you please try to help me understand and solve this problem?&lt;/P&gt;</description>
      <pubDate>Tue, 26 Mar 2024 10:55:03 GMT</pubDate>
      <guid>https://community.qlik.com/t5/App-Development/Calculate-median-over-grouped-data/m-p/2434655#M96910</guid>
      <dc:creator>marcin_st</dc:creator>
      <dc:date>2024-03-26T10:55:03Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate median over grouped data</title>
      <link>https://community.qlik.com/t5/App-Development/Calculate-median-over-grouped-data/m-p/2434924#M96939</link>
      <description>&lt;P&gt;I'm not sure how, but your formula works correctly:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bgerchikov_0-1711504475829.png" style="width: 400px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/162784i30745D6A1457D828/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bgerchikov_0-1711504475829.png" alt="bgerchikov_0-1711504475829.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 27 Mar 2024 01:54:43 GMT</pubDate>
      <guid>https://community.qlik.com/t5/App-Development/Calculate-median-over-grouped-data/m-p/2434924#M96939</guid>
      <dc:creator>bgerchikov</dc:creator>
      <dc:date>2024-03-27T01:54:43Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate median over grouped data</title>
      <link>https://community.qlik.com/t5/App-Development/Calculate-median-over-grouped-data/m-p/2434935#M96940</link>
      <description>&lt;P&gt;It may be possible trying to do this with concat() and generating a long list of values on the fly, but it feels like performance and scalability might lag trying to do this all in the UI, and to me the approach feels like a stretch.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I think everything works way better if you uncompress your data and create a data set like this:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="JonnyPoole_0-1711507663606.png" style="width: 400px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/162786iE7885A8679BAB653/image-size/medium?v=v2&amp;amp;px=400" role="button" title="JonnyPoole_0-1711507663606.png" alt="JonnyPoole_0-1711507663606.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Then its easy to apply the median() function&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="JonnyPoole_1-1711507711244.png" style="width: 400px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/162787iC65A559D2AC1D487/image-size/medium?v=v2&amp;amp;px=400" role="button" title="JonnyPoole_1-1711507711244.png" alt="JonnyPoole_1-1711507711244.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To uncompress the data, here is a script that duplicates the data row by row as determined by the counter value. Also attached is the XLXS I used to generate this.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;CompressedData:&lt;/DIV&gt;
&lt;DIV&gt;LOAD&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; RecordID,&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; Price,&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; Counter&lt;/DIV&gt;
&lt;DIV&gt;FROM [lib://Community Answers:DataFiles/2434655.xlsx]&lt;/DIV&gt;
&lt;DIV&gt;(ooxml, embedded labels, table is Sheet1);&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;LET vNumRows=NoOfRows('CompressedData')-1;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;FOR row = 0 TO $(vNumRows)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt; LET vRowsToGenerate=PEEK('Counter',$(row),'CompressedData');&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; UnCompressedData:&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; LOAD&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; PEEK('RecordID',$(row),'CompressedData') AS RecordID,&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; PEEK('Price',$(row),'CompressedData') AS Price&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt; AutoGenerate $(vRowsToGenerate);&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;NEXT row&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;DROP TABLE CompressedData;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 27 Mar 2024 02:49:37 GMT</pubDate>
      <guid>https://community.qlik.com/t5/App-Development/Calculate-median-over-grouped-data/m-p/2434935#M96940</guid>
      <dc:creator>JonnyPoole</dc:creator>
      <dc:date>2024-03-27T02:49:37Z</dc:date>
    </item>
  </channel>
</rss>

