如何计算和比较同一列中的值 table

How to count and compare value of colume in the same table

我需要创建一个程序,通过 'P' 和 'U' 计算状态来计算一个 table 中最差的用户,然后将其与其他用户进行比较,取那个用户id,在另一个table中找到,将两个table中的所有用户信息写入。我从 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,还有一个 U,所以他的比率是 3 P。然后应该去 Korisnik table 和 return 所有信息对于 ID 为 2

的用户

我试了一下,但无法获得任何 return 值

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

您可以使用以下方法让更差的用户使用:

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

这会在一个查询中完成您所描述的您想做的事情。