Forums before death by AOL, social media and spammers... "We can't have nice things"
|    comp.databases.ms-sqlserver    |    Notorious Rube Goldberg contraption    |    19,505 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 19,476 of 19,505    |
|    Erland Sommarskog to Anton Shepelev    |
|    Re: Calculating the percentile    |
|    14 Mar 24 14:55:22    |
   
   From: esquel@sommarskog.se   
      
   Anton Shepelev (anton.txt@g{oogle}mail.com) writes:   
   > I am trying to solve a trivial problem, and my solution   
   > turns out unexpectedly cumbersome and likeky suboptimal.   
   > Given a table storing values (val) over dimension (dim), I   
   > want to query the total, mean and median of the value over   
   > the dimension. My solution is:   
   >   
   > SELECT   
   > dim ,   
   > SUM(val) tot,   
   > AVG(val) avg,   
   > med   
   > FROM   
   > ( SELECT   
   > dim,   
   > val,   
   > PERCENTILE_CONT( 0.5 )   
   > WITHIN GROUP (ORDER BY val)   
   > OVER (PARTITION BY dim) AS med   
   > FROM #test   
   > ) w_med   
   > GROUP BY dim, med   
   >   
      
   If you are on SQL 2022, you can use the new function   
   APPROXIMATIVE_PERCENTILE_CONT which is a regular aggregate function.   
   But as the name says, it is approximative. It's intended for large   
   data sets where exact calculation would take a lot of time. I don't   
   know how well it works on smaller data sets.   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca