加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 在一个查询中计算带有group by的多个列

发布时间:2020-12-12 06:52:10 所属栏目:MsSql教程 来源:网络整理
导读:我计算来自多个列的值,如下所示: SELECT COUNT(column1),column1 FROM table GROUP BY column1SELECT COUNT(column2),column2 FROM table GROUP BY column2SELECT COUNT(column3),column3 FROM table GROUP BY column3 例如,对于column1数组(attr1 = 2000
我计算来自多个列的值,如下所示:
SELECT COUNT(column1),column1 FROM table GROUP BY column1
SELECT COUNT(column2),column2 FROM table GROUP BY column2
SELECT COUNT(column3),column3 FROM table GROUP BY column3

例如,对于column1数组(attr1 => 2000,attr2 => 3000 …)返回(每列具有特定值和少量值)。问题是我的应用程序中的“表”可能是一个带有一些连接和where子句的查询,可能需要0.1秒。通过做所有计数,每次再次计算“表”,这是不必要的。有没有办法用一个查询获取我想要的结果,或“缓存”生成表的查询?否则我相信非规范化将是这里唯一的解决方案。我想要与上述查询相同的结果。我正在使用mysql-myisam。

解决方法

如果不了解数据的上下文/结构,很难知道如何帮助您,但我相信这可能对您有所帮助:
SELECT 
     SUM(CASE WHEN column1 IS NOT NULL THEN 1 ELSE 0 END) AS column1_count,SUM(CASE WHEN column2 IS NOT NULL THEN 1 ELSE 0 END) AS column2_count,SUM(CASE WHEN column3 IS NOT NULL THEN 1 ELSE 0 END) AS column3_count
FROM table

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读