【问题标题】:How to count the duplicate column values in sql如何计算sql中重复的列值
【发布时间】:2016-01-15 12:20:16
【问题描述】:

我的表'testsql1'的值如下:

(myid (int), col1 (nvarchar), col2 (binary)) 
VALUES (10, 'Prod', 0), (10, 'Test', 0), (10, 'Review', 1),
       (11,'Prod', 0), (11, Review, 1)

我要选择数据如下

(myid, col1, col3) 
VALUES (10, Review, 3), (11, Review, 2)

基本上,我只想要“评论”数据和计算出来的 col3,它应该告诉所有“评论”作为 col1 的重复“myid”的计数。 col2 的条件是它是二进制的,并且当 col1 为 'Review' 时始终包含值 1

我已经尝试了以下

select myid, col1, count(myid) as col3
from testsql1
where col1 = 'Review'
group by myid, col1;

但它只是让我的 col3 值对于两个 myid(10 和 11)都为 1

【问题讨论】:

  • 我不明白你的要求。如我所见,结果是正确的,两个 ID 都有 1 条评论记录

标签: sql count sum distinct


【解决方案1】:

你可以使用:

select myid, 'Review' AS col1, count(myid) as col3
from testsql1
group by myid;

LiveDemo

输出:

╔══════╦════════╦══════╗
║ myid ║  col1  ║ col3 ║
╠══════╬════════╬══════╣
║   10 ║ Review ║    3 ║
║   11 ║ Review ║    2 ║
╚══════╩════════╩══════╝

【讨论】:

    【解决方案2】:

    试试这个

    select distinct a.myid,'Review' as col1,a.col3
    From (select myid, count(myid) as col3
    from testsql1
    group by myid) a,testsql1 b
    where col1 = 'Review' and a.myid = b.myid
    

    【讨论】:

      【解决方案3】:

      试试这个

      选择 col1,count(myid) 作为 col3 来自 testsql1 其中 col1='评论' 按 col1 分组;

      【讨论】:

        【解决方案4】:

        你可以这样使用...

        select myid, 'Review' as col1, count(myid) as col3
        from testsql1
        group by myid;
        

        【讨论】:

        • 为什么您希望此查询得到不同的结果?
        • 你注意到@lad2025 的回答了吗?
        • @HoneyBadger 因为当您按 col1 分组时,您将仅过滤具有“评论”的列。这就是为什么您的结果在 col3 只为您带来 1
        • @HoneyBadger 他几乎和我同时发帖
        • “他几乎和我同时发帖”,3 分钟前有演示。似乎合法。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-14
        • 2020-11-28
        • 2021-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多