问题:我必须计算某个用户拥有证书的次数,然后返回用户名,证书数以及所有用户的最大证书数与此特定用户证书数之间的差异。我成功完成了第一部分(获得证书的数量),我将其称为$ 查询 $(因为我感觉我的问题与别名有关)。
所以$ 查询 $看起来像这样:
User |N_Certificates
Geoff 4
Ann 2
Lisa 0
我的最终结果应如下所示:
User |N_Certificates |Difference
Geoff 4 0
Ann 2 2
Lisa 0 4
我尝试了这个查询:
SELECT Sub.name, Sub.N_Certificates,
MAX(Sub.N_Certificates)- Sub.Certificates AS Difference FROM ($_query_$) AS SUB
但它返回了一个错误(因为我试图将聚合函数与我没有分组的列结合使用)或错误的结果(特别是所有列的差异= 0)。
我在另一个版本的sub(同样的$ 查询 $ code和另一个别名)上尝试了INNER JOIN的装置,但它也没有用(同样的原因)。我可以硬编码最大但我不认为这是一个很好的解决方案。我的屏幕告诉我,我使用的是pg_Admin版本1.18。
答案 0 :(得分:0)
你不能这样做,SQL语法不允许这样做。
最简单的方法是使用子查询:
/*Styles The Sections Home, About, Portfolio, Contact */
.main-section{
padding: 10%;
min-height: 850px;
text-align : center;
vertical-align : middle;
}
/*Styles for the home section */
/*For the contact buttons used*/
.social-links{
margin : 5px;
}
/*Jumbotron */
.jumbotron{
background-color: rgba(0, 0, 0, 0.2);
}
.home h1 {
font-size : 4.5em;
font-family: "Bitter";
color : whitesmoke;
}
.home h2 {
font-size : 2.5em;
font-family: "Nunito";
color : whitesmoke;
}
.home{
background: #464646 url(https://lh3.googleusercontent.com/oP9QfLUk4_YixVCz4fuKCpxkJ2LtR3g0YGoKtLYSA_vBQTO1YFHZfg2Iscj5hYF1vuSaHbF_QMSnoM6f_-XXYI9P47W5dKDafjeLJKEAa-dls_WjgKOZZEfdxCcZt1g_4uuGyxWdm5R6xQDV9ZQ1w6aDdWnhDLoofjJkNWUMNy3rV-hXIIKrY9T-81pN6kuhVY7uFxZYhOwo0hhvKr2e7ET5QnNy2PUO5T_FQ7TZKQWewkF7ljey6i_B1fnwoI8IBXtN0csoBPrV7kryK-PRUBbou3boG4ikPMU9NPLq1ljze5er0cKVvCWbtVhgbcNjg-B6emsSRvqHhqsZ7-WyQmMb4B4BOTohU9DJwfiVTv38boBYAgIKGCC_55pAZA9tb1nQ4oZbadxq02AfU_WkIqH21jltrOyf7sN2mK5VgTAT1fDP2r6D3yap0y-floTAvWtcrxeXWOmLiwZ7vNpIebLAkuq04yQcXPuscnU-J7VzaRBnCadoTt8BEgY3n2sNjeGwxIPLMnTKtZFDEUZBC77pRQ7ZwtgjPFcbxycwbVwD6IiBZxprdoV7F3Q65wpvR8EHyQ=w1343-h895-no) center center / cover no-repeat fixed;
}
/*End Styles for the home section*/
/*Styles for the about section*/
/*About Section Styles*/
.about h1 {
font-family: "Bitter";
color : whitesmoke;
}
.about h2 {
font-size : 4.5em;
font-family: "Nunito";
color : black;
}
.about p {
font-size : 2.5em;
}
/*Background Image For Aboutscreen*/
.about{
background: #464646 url(https://lh3.googleusercontent.com/O1lxoFC8mNtnvpUIDL5VoX_smh8PV-1ZBER1KA9jcpGVkXYi72DJwHfW1Ehj2bMU9wl2LoKpSUee7EmyXxK57vPgWESE3XILTBGfEBj5wE1AXxFL4jYdBTAXbQg-X-Cdyzi3P5nrI5KRtQ57I6gbvst8sTRF-W79W1YPEQGkIRIcA_LPhz0-V1K6oqTd3o_jchKF5wxgTEDin9h5089wY94egqJbop0yeENb6mPrc44K3d5k-Z2ZXyq5MpJ-CDQG3gv0I6SKnJrlQe1cZXe3bB2KoRUaYfOors1937aaNRDe3UFPaCZgRkGm61NDoMyP0R0_b0zykjMfG--WnO6yo3JZqHBj9C-8HYi3dX4GBPS95gH61gmf58HA0ZJb-0ksjA6pzN4-rfIHyMCqH6reG6m5qyf6lKhrpCNUQCMWHLROxsmb30ImW4uS01uDZLUjljCY9q4arv17FaPaRqUTiov4DBxNk4PUxqBQDXxMWM8OjnPuVc-upRQmtbNCgkhB1wpYFSdFsEQ5ksKdnwZfamxYs2K7AQCkyg9BBKQqJcRCTWRfKTyhmeT0chWeAqw4HEmNfg=w1343-h895-no) center center / cover no-repeat fixed;
}
/*Div holding about-image*/
.img-container{
overflow: auto;
padding : 10% 0% 0% 0%;
}
/*Making abuot-image circular*/
.about-image{
padding: 0% 0% 0% 0%;
float: left;
border-radius : 50%;
width : 50%
}
.h2{
color: black;
}
/*End About Section Styles
您还可以使用公用表表达式:
SELECT Sub.name, Sub.N_Certificates,
(SELECT MAX(Sub.N_Certificates) FROM ($_query_$))
-
Sub.Certificates AS Difference
FROM ($_query_$) AS SUB
您可以使用Windows功能:http://www.postgresql.org/docs/9.1/static/tutorial-window.html
WITH some_alias AS(
SELECT * FROM ($_query_$)
)
SELECT name, N_Certificates.
(SELECT MAX(N_Certificates)FROM some_alias)
-
Certificates AS Difference
FROM some_alias