我需要创建一个程序,通过计算“P”和“U”计算比率的状态来找到一个表中最差的用户,然后将其与其他用户进行比较,获取该用户ID并在另一个表中找到它并写入所有两个表中的用户信息。我从java应用程序调用该过程。
Table Rezervacija
id | SifKorisnikPK | Status
1 | 1 | 'P'
2 | 1 | 'U'
3 | 1 | 'U'
4 | 2 | 'U'
5 | 2 | 'P'
6 | 2 | 'P'
7 | 2 | 'P'
8 | 2 | 'P'
9 | 3 | 'U'
10 | 3 | 'U'
11 | 3 | 'P'
12 | 3 | 'P'
13 | 3 | 'P'
14 | 3 | 'P'
因此,id为2的用户是最差的用户,因为4 P和1 U,所以他的比例是3 P.然后它应该去Korisnik表并返回id为2的用户的所有信息
我尝试使用此功能但无法获得任何返回值
CREATE PROCEDURE sp_getBadPremiumUsers
AS
BEGIN
DECLARE @BrLr int
DECLARE @BrDr int
SELECT @BrLr = (SELECT COUNT(*) FROM Rezervacija A
INNER JOIN Rezervacija B
ON A.SifKorisnikPK = B.SifKorisnikPK
WHERE A.Status = 'P')
SELECT @BrDr = (SELECT COUNT(*) FROM Rezervacija A
INNER JOIN Rezervacija B
ON A.SifKorisnikPK = B.SifKorisnikPK
WHERE A.Status = 'U')
SELECT * INTO #PremiKoris FROM Korisnik
INNER JOIN PremiumKorisnik
ON SifKorisnik = SifKorisnikPK
ALTER TABLE #PremiKoris
DROP COLUMN Password
SELECT * FROM #PremiKoris
WHERE @BrLr > @BrDr
DROP TABLE #PremiKoris
END
GO
答案 0 :(得分:0)
您可以使用以下方式来吸引更糟糕的用户:
select r.SifKorisnikPK
from Rezervacija r
where status = 'P'
group by SifKorisnikPK
order by count(*) desc
limit 1;
然后,您可以在查询中使用它来获取更多信息:
select k.*
from PremiumKorisnik k join
(select r.SifKorisnikPK
from Rezervacija r
where status = 'P'
group by SifKorisnikPK
order by count(*) desc
limit 1
) r
on r.SifKorisnikPK = k.SifKorisnikPK
这会在一个查询中执行您要描述的内容。