Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gzhe5-00033X-4F for pgsql-sql@arkaria.postgresql.org; Fri, 01 Mar 2019 12:52:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1gzhe3-0008HL-PR for pgsql-sql@arkaria.postgresql.org; Fri, 01 Mar 2019 12:52:07 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gzhe3-0008HE-Ip for pgsql-sql@lists.postgresql.org; Fri, 01 Mar 2019 12:52:07 +0000 Received: from mout.kundenserver.de ([212.227.17.24]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gzhe1-0003rT-Ja for pgsql-sql@lists.postgresql.org; Fri, 01 Mar 2019 12:52:07 +0000 Received: from [10.8.0.101] ([185.40.248.10]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.145]) with ESMTPSA (Nemesis) id 1N7yz7-1h4Z4D2YhH-01534M for ; Fri, 01 Mar 2019 13:52:02 +0100 Subject: Re: Top 3 values for each group in PGSQL To: pgsql-sql@lists.postgresql.org References: <67FB61BF-CF8F-440E-B4C5-B6F72D61A9C7@gmail.com> From: Thomas Kellerer Message-ID: <50d9b39f-56f8-8bc8-a93a-d5feb16f4dd3@gmx.net> Date: Fri, 1 Mar 2019 13:52:02 +0100 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.23) Gecko/20090812 Thunderbird/2.0.0.23 Mnenhy/0.7.6.666 MIME-Version: 1.0 In-Reply-To: <67FB61BF-CF8F-440E-B4C5-B6F72D61A9C7@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Language: de-DE Content-Transfer-Encoding: 8bit X-Provags-ID: V03:K1:wIx7OW4WkJgbS3bl0JvM56MspFFP/XVbi+oXckR8vVDvavu0Bdp nsrTf0h/BHNkdZ7fnxOmL6TApj/bQc+bG32KoA9QXUdsdwXDv8vUsP0baRZcuqScOkqmhyl nW4wtZeacxby6+8mUgNt+99GCR8Y+O6EY64cwrthkKXTJqNbrY1ki19CKKS+kRbISFPkUpw 7vfNczxv6ZYAO/BnRgBkg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:CSChkoLiY7A=:JbHN43Vgcnml+Cukyj0iFH gGmtB6SBqYXve9dPYId8vOudanDhstGvz016DxP36lDl5dm7DRiZbXFyYkFDPWiLmikLjMaZL pbOUiaAhxBHIShMWoGDNwI2pbhuaAclTvWdYUBGKRUEF047S4Yu3HroZUV3VAp0tvuM1R9bDC okSlZ2gtpna8+w+bLFqqA8g0ULx0GnbsHqHOQRrNqjBAiHoPiQgfnV+YgY+G2wMLqTnR2aiGs ABGLp1H8wyAhd7YB/HKcUV4vRLiL+y2l5YeY8QcM7teyCP5ToAO6nAOa/dRcFocymMeyrQZIA lZL+D5fsifF0egS0UcvTNqMSk+znq+8zG1RRRljiTvFQ8UNqYnyn669I/UbKpF4z+AXm6ewhv zqrHaKXH270idtfbA6iv4rk4Y5WVV8cm5lpQKCusqJSEQqN0QNEQVkJlyqyVNRgTv4QNMs/RH oyuuqKnaJ6EN0WULG+2w16a1dBor6OXrlpBU+XmLOCVAak80z/Kp9Cz/TGokig1v2jS1UFXCx Fl56FeGAU1Djcw3udlwJZnT/+UdgD5LgpeePrXY75NoZbUA/n0CW7lKV1NzmnrsqacTb0rIgv OjyThmHu+kD5hymMmS5e/f+98FEEfRbzWLfX6DN0eeIv0rQzL0qm0L8jdM/bAqs77mZ/JqmoM ygmtRR0w8xM4COcJ139rOW4rpJ37o2nphniMo6nX0naHlSUEG+uVld93yyiKf3Bx1yHWzT3ZO QZ3Nx68LnN0Y1tmsDrnnzuiJozUwlNIh1T8KI3OC5yhnmk2mEnOfFkLL9Vk= List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk Ila B. schrieb am 01.03.2019 um 11:51: > Hello, > > I’m working on a health database and I’m trying to extract the most popular prescription codes from a custom table I structured like this: > > Year - Code - Count(code) > > I want to extract the 3 codes with maximum count for each year. I know I should be using rank() but I don’t really understand how this works. > I am using pgAdmin4 version 3.5 with PostgreSQL 10.6 on Windows 10 Pro and no permission to update. Something along the lines: select code, year, "count" from ( select code, year, "count", dense_rank() over (partition by code, year order by "count" desc) as rnk from the_table ) t where rnk <= 3;