【问题标题】:SQL count once againSQL 再次计数
【发布时间】:2019-01-11 14:56:37
【问题描述】:

我正在使用here描述的示例数据

我想要一份机构列表,其中包含指定作者在所有论文中出现次数的计数。

这个查询给出了一个正确的列表

SELECT  DISTINCT p.name || ", " || p.country as col1,  w2.paper_id,   w2.inst_id
FROM (
    authors a
    INNER JOIN writtenby w1 
   ON a.author_id = w1.author_id 
    INNER JOIN writtenby w2 
   ON w1.paper_id = w2.paper_id 
     INNER JOIN inst p 
   ON  w2.inst_id = p.inst_id 

) 
WHERE (a.name) = "De La Rue"  AND (a.firstname) = "A"

例如,我计算了 inst_id = 5 出现的 3 次。

我无法用 SQL 翻译这个计数。

我试过了

SELECT  DISTINCT p.name || ", " || p.country as col1,  count(w2.paper_id)
FROM (
    authors a
    INNER JOIN writtenby w1 
   ON a.author_id = w1.author_id 
    INNER JOIN writtenby w2 
   ON w1.paper_id = w2.paper_id 
     INNER JOIN inst p 
   ON  w2.inst_id = p.inst_id 

) 
WHERE (a.name) = "De La Rue"  AND (a.firstname) = "A"
GROUP BY  w2.inst_id

返回:

col1    count(w2.paper_id)
Universite de Paris, France 12
Universite de Lyon, France  6
Univ Freiburg, Germany  6
EPFZ, Switzerland   8

这似乎完全错误......

感谢您的更正!

弗朗索瓦

【问题讨论】:

    标签: sql sqlite count


    【解决方案1】:

    尝试使用COUNT(DISTINCT w2.paper_id) 而不是COUNT(w2.paper_id)

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 2020-06-11
    • 2013-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多