Received: from makus.postgresql.org (makus.postgresql.org [98.129.198.125]) by mail.postgresql.org (Postfix) with ESMTP id 1F5302B4152 for ; Sun, 20 May 2012 20:17:23 -0300 (ADT) Received: from atlas.wxnz.net ([58.28.6.122]) by makus.postgresql.org with esmtp (Exim 4.72) (envelope-from ) id 1SWFNI-0001JQ-FW for pgsql-sql@postgresql.org; Sun, 20 May 2012 23:17:22 +0000 Received: from central.omiha.com (ip-118-90-123-208.xdsl.xnet.co.nz [118.90.123.208]) by atlas.wxnz.net (Postfix) with ESMTP id ED8812D915D for ; Mon, 21 May 2012 11:17:05 +1200 (NZST) Received: from [10.10.10.12] (unknown [10.10.10.12]) by central.omiha.com (Postfix) with ESMTP id 4D5F91ACCA for ; Mon, 21 May 2012 11:17:05 +1200 (NZST) Message-ID: <4FB97B70.6080604@greenpeace.org> Date: Mon, 21 May 2012 11:17:04 +1200 From: Jan Bakuwel Organization: Greenpeace (http://www.greenpeace.org) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20120430 Thunderbird/12.0.1 MIME-Version: 1.0 To: pgsql-sql@postgresql.org Subject: master/detail References: <4FB7EEC6.1030004@gmx.net> <4FB8B489.3050701@gmx.net> In-Reply-To: <4FB8B489.3050701@gmx.net> X-Enigmail-Version: 1.5pre Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha1; boundary="------------ms070905050607080509060201" X-Pg-Spam-Score: -1.9 (-) X-Archive-Number: 201205/55 X-Sequence-Number: 36603 This is a cryptographically signed message in MIME format. --------------ms070905050607080509060201 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi, I'm trying to get my head around the following question. As an example take a table with products: productid (pk) name and productprice productpriceid (pk) productid (fk) pricedate price There are multiple records in productprice for each product as prices (often) go up and (less often) go down. I'm looking for a query that returns the following: productid, name, pricedate, current_price, difference current_price is the latest (ie. most recent date) price of the product and difference is the difference in price between the latest price and the price before the latest. Any suggestions how to do this with SQL only? I can make it work with a function (probably less efficient) but think this should be possible with SQL too... cheers, Jan --------------ms070905050607080509060201 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIIDzCC CAswggXzoAMCAQICAyACKjANBgkqhkiG9w0BAQUFADCB+DEhMB8GA1UEChMYR3JlZW5wZWFj ZSBJbnRlcm5hdGlvbmFsMR4wHAYDVQQLExVDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxMzAxBgkq hkiG9w0BCQEWJGNlcnRpZmljYXRlLmF1dGhvcml0eUBncmVlbnBlYWNlLm9yZzESMBAGA1UE BxMJQW1zdGVyZGFtMRYwFAYDVQQIEw1Ob3J0aCBIb2xsYW5kMQswCQYDVQQGEwJOTDFFMEMG A1UEAxM8R3JlZW5wZWFjZSBHbG9iYWwgQXV0aGVudGljYXRpb24gYW5kIEVuY3J5cHRpb24g Um9vdCBDQSAyMDEwMB4XDTExMDcxOTA5MjExNloXDTE2MDcxNzA5MjExNlowgb0xCzAJBgNV BAYTAk5MMRYwFAYDVQQIEw1Ob3J0aCBIb2xsYW5kMSEwHwYDVQQKExhHcmVlbnBlYWNlIElu dGVybmF0aW9uYWwxHjAcBgNVBAsTFUNlcnRpZmljYXRlIEF1dGhvcml0eTESMBAGA1UEBxMJ QW1zdGVyZGFtMRQwEgYDVQQDEwtqYW4uYmFrdXdlbDEpMCcGCSqGSIb3DQEJARYaamFuLmJh a3V3ZWxAZ3JlZW5wZWFjZS5vcmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCy 0wcYLAIQbP9MSESY1RaR/f8Ram8TIOPhajUK8dvMFqSb/7/21hPdsON0o21iPcfQP7pLPRTo FVpW2CnCfJuCzMZVx7n/o+T47S8sN2YzgqkUPd63HmPO4AIE8zdWOmG6aCuy5wttWitGPr3D krJzRA/WRbhKc+ebKJAfFMr8N9kKPK6tIMRcn52iZbMQUbGeAHzKXhrT9QH7p+r5V+89L8fJ YmI2zne7rIj8db3rxyZbsA11M5bXgDpJFeIwtibnBC/Jt00LViq8HHBM/eZUEwdPse90n17d 7tLeBuwZ7Dckkm+lugzhR2hnibVHtAdAquIotkgUqh3UQH4g2ZA0pPHwxf2xLfmFqVJj3Ode VmKkYsj/P16V1lQpXqX//7eRm1N9j8kKllig8N3jkBdZFwXjRtbe6DUnZQFrVBuIKfA63RHN sb6qas47RFOvVtblUY/DW2f6zCm6EsHtcMpNj8vxSeF5MUpO2y/YRXEDermXOyu/40yv8tXT YwIdTfba/EvO4EBnXm6IXGnUSp8NEAVhc0/kB9vJ+pq9XO/UHFvo9fOeu3T7KgMNN31QhxlG D2FGh5f8LlTNktRsdyMYCF2m85wUFV2GQOW3etGnEY4T0aLacikbWF/zwPYns9nnpvtTeKyP fGloh30zyo00OVqhNnREH7A48rSp4qYJRwIDAQABo4IB1TCCAdEwCQYDVR0TBAIwADAdBgNV HQ4EFgQU7Sg0TwH6c2T23HGF9Dhnjr/uEecwEQYJYIZIAYb4QgEBBAQDAgSwMCUGA1UdEQQe MByBGmphbi5iYWt1d2VsQGdyZWVucGVhY2Uub3JnMEoGA1UdJQRDMEEGCCsGAQUFBwMBBggr BgEFBQcDAgYIKwYBBQUHAwQGCisGAQQBgjcKAwMGCisGAQQBgjcKAwQGCWCGSAGG+EIEATCB uAYJYIZIAYb4QgENBIGqFoGnR3JlZW5wZWFjZSBpcyBhbiBpbmRlcGVuZGVudCBnbG9iYWwg Y2FtcGFpZ25pbmcgb3JnYW5pc2F0aW9uIHRoYXQgYWN0cyB0byBjaGFuZ2UgYXR0aXR1ZGVz IGFuZCBiZWhhdmlvdXIsIHRvIHByb3RlY3QgYW5kIGNvbnNlcnZlIHRoZSBlbnZpcm9ubWVu dCBhbmQgdG8gcHJvbW90ZSBwZWFjZS4wZAYDVR0fBF0wWzBZoFegVYZTaHR0cDovL2NybC5n cmVlbnBlYWNlLm9yZy9HcmVlbnBlYWNlR2xvYmFsQXV0aGVudGljYXRpb25BbmRFbmNyeXB0 aW9uUm9vdENBMjAxMC5jcmwwDQYJKoZIhvcNAQEFBQADggIBABeaDIOCNVnvH3b+KqlidkTj UKc51rm7JvxOhm84tgEJmuVk4NlAwxfXWKTGjVwzlvOG3OhpoxSc7rOnYTsxU27NDPbkRcIN GcOIsgrmwlhmUzMpgQ+bN9CyHbaEdNKm5Aa/OTXvu0kSsgEz4Q/1Z+yk5G3+dpP32DY1waq9 zy3XPOBUTjX/A2y/LyaxFxnipBpt+mbA1Zd39s11A/aGbFpC5HrMJd6WH5669B/U7gwMdIxE 15P2O9hjfMT/BxfmWsa7rDvC+RuUtD1rQxXgAYwwnJaiHHl23Cwl5UiDABbK+Ox6kg6PPpzs /vfPi7z0Cv7wwNsI7NMqVb2LTLbd3nmiqy7HSJCb4WyOh3jK9Aih7wH1BhFbIbygiP9B7UWX ng8PVqzuhwJV8Ef2emJY4bAvcstayqY5X0QQHgFDXO3PYXbWbUtzplIQXgV9JQNdS5zPNw95 O2dMTWCVaHQ+vKSziF0sudjrUbI+w5dH6dai6y7h8+7kqZ3EOs3NFU3bSn34o+22Ly04xpSN DLyQY3opgG5KVXJf5/GSPtC+mGIZm5O6Mgi4TWZecov37Gpm0d5G3tgZz8/i5Imdaq6zzRqW LUR9K/UdXDis1kkLZZdrjkop/UEchhkIE87snUIr27FPPkpK2l+suNYKHrK+AGKA9cWVmXjX wlBSrr/bnhxZMYIGGzCCBhcCAQEwggEAMIH4MSEwHwYDVQQKExhHcmVlbnBlYWNlIEludGVy bmF0aW9uYWwxHjAcBgNVBAsTFUNlcnRpZmljYXRlIEF1dGhvcml0eTEzMDEGCSqGSIb3DQEJ ARYkY2VydGlmaWNhdGUuYXV0aG9yaXR5QGdyZWVucGVhY2Uub3JnMRIwEAYDVQQHEwlBbXN0 ZXJkYW0xFjAUBgNVBAgTDU5vcnRoIEhvbGxhbmQxCzAJBgNVBAYTAk5MMUUwQwYDVQQDEzxH cmVlbnBlYWNlIEdsb2JhbCBBdXRoZW50aWNhdGlvbiBhbmQgRW5jcnlwdGlvbiBSb290IENB IDIwMTACAyACKjAJBgUrDgMCGgUAoIIC7jAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwG CSqGSIb3DQEJBTEPFw0xMjA1MjAyMzE3MDRaMCMGCSqGSIb3DQEJBDEWBBQ4e1WfgKoI7ZzJ 7pfGVrs22LefeTBfBgkqhkiG9w0BCQ8xUjBQMAsGCWCGSAFlAwQBAjAKBggqhkiG9w0DBzAO BggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgw ggETBgkrBgEEAYI3EAQxggEEMIIBADCB+DEhMB8GA1UEChMYR3JlZW5wZWFjZSBJbnRlcm5h dGlvbmFsMR4wHAYDVQQLExVDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxMzAxBgkqhkiG9w0BCQEW JGNlcnRpZmljYXRlLmF1dGhvcml0eUBncmVlbnBlYWNlLm9yZzESMBAGA1UEBxMJQW1zdGVy ZGFtMRYwFAYDVQQIEw1Ob3J0aCBIb2xsYW5kMQswCQYDVQQGEwJOTDFFMEMGA1UEAxM8R3Jl ZW5wZWFjZSBHbG9iYWwgQXV0aGVudGljYXRpb24gYW5kIEVuY3J5cHRpb24gUm9vdCBDQSAy MDEwAgMgAiowggEVBgsqhkiG9w0BCRACCzGCAQSgggEAMIH4MSEwHwYDVQQKExhHcmVlbnBl YWNlIEludGVybmF0aW9uYWwxHjAcBgNVBAsTFUNlcnRpZmljYXRlIEF1dGhvcml0eTEzMDEG CSqGSIb3DQEJARYkY2VydGlmaWNhdGUuYXV0aG9yaXR5QGdyZWVucGVhY2Uub3JnMRIwEAYD VQQHEwlBbXN0ZXJkYW0xFjAUBgNVBAgTDU5vcnRoIEhvbGxhbmQxCzAJBgNVBAYTAk5MMUUw QwYDVQQDEzxHcmVlbnBlYWNlIEdsb2JhbCBBdXRoZW50aWNhdGlvbiBhbmQgRW5jcnlwdGlv biBSb290IENBIDIwMTACAyACKjANBgkqhkiG9w0BAQEFAASCAgBKToMued9CMIYTY2j69/qQ sFXrjr1OpVcHAe++07TS4QeUXKhMSDhzkKqIjOH+OklVdPTYOgrJH9pr9pHqo4HhS2QzWpPp qp7byn33xs7bWpNE01rAlLCtMEEHXGXf8JrjKoFK+eEJ3bDs9ZQEEWnW9cnJJqx1mHKMPUag hu+y1xoPNya7KuBitZTeXcfsnxJKDchd1Cpxr6/PlK2kWNtZ55thHTrDvirywcT/RuGtVLAB McfrQ4lhq1CW67wfAaS1/vjwW5ybKtULc5elO8QlELrztiWeU3jCIuvEFsBZg3LXfm6Zsbh0 fGyG1a4mQKfas6xLve1OuC7vsPIAr9I0nOfZcLKVmcVnPf1/RjLOM/nJii4o9RiileQsGRTT Om8xXJ+7RZ25+b93ZTEP5Ig/9GuHuK9wrXyZneRWBRQ1Iq+b2PolzJtCCZaC4zDzi0dC90b3 pkxUGWNo7g3iOLdM9558IF5+TJ5BScbRi9rSSPFZexc6NsXEsQT+YeI4J9dEP/4dDVZJ5Ite O9CGtgmE8NmHJGAqou5Al27PiwMjKiyNJ6Nv+kzT4z4jWi/7G6iWVZvdNuZClG8SihOUhLeH P0ht/l1/L/r4uTeIuNHDyjjSAudAjynoM+z1Y1Cue8Aq7vMt8UzACUsIA7USPb/uW+TGbMlp B4vEu5pDxTZpUAAAAAAAAA== --------------ms070905050607080509060201--