[英]How to compare two instances of the same condition in sql?
我有以下表格:
CREATE TABLE researcher
(
rid PRIMARY KEY,
name,
institution,
city,
country
)
CREATE TABLE paper
(
title PRIMARY KEY,
journal,
volume,
number,
year
)
CREATE TABLE author
(
resid FOREIGN KEY REFERENCES researcher.rid,
title FOREIGN KEY REFERENCES paper.title
)
我需要在SQL查詢中列出2019年發表論文多於2018年的期刊。
我試過這個:
SELECT
journal
FROM
paper
GROUP BY
journal
HAVING
COUNT(title)
WHERE
year = 2019 > year = 2018
由於我不能condition > condition
,我該如何解決這個問題?
使用條件表達式。 . .
SELECT journal
FROM PAPER
GROUP BY journal
HAVING SUM(CASE WHEN year = 2019 THEN 1 ELSE 0 END) > SUM(CASE WHEN year = 2018 THEN 1 ELSE 0 END);
請記住,在 SQL 中, SELECT
語句的邏輯順序實際上是(通常):
考慮到這一點...
SELECT
journal,
[year]
COUNT( CASE WHEN [year] = 2018 THEN 1 END ) AS PaperCountIn2018,
COUNT( CASE WHEN [year] = 2019 THEN 1 END ) AS PaperCountIn2019
FROM
paper
GROUP BY
journal,
[year]
(@GordonLinoff 的回答通過將謂詞移動到HAVING
子句在單個查詢中完成,而我更喜歡使用外部查詢)。
SELECT
journalPaperCounts.*
FROM
(
SELECT
journal,
[year]
COUNT( CASE WHEN [year] = 2018 THEN 1 END ) AS PaperCountIn2018,
COUNT( CASE WHEN [year] = 2019 THEN 1 END ) AS PaperCountIn2019
FROM
paper
GROUP BY
journal,
[year]
) AS journalPaperCounts
WHERE
journalPaperCounts.PaperCountIn2018 > PaperCountIn2019
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.