为了账号安全,请及时绑定邮箱和手机立即绑定

SQL Server查询-使用DISTINCT选择COUNT(*)

SQL Server查询-使用DISTINCT选择COUNT(*)

慕莱坞森 2019-10-15 11:02:20
在SQL Server 2005中,我有一个表cm_production,其中列出了已投入生产的所有代码。该表具有ticket_number,program_type,program_name和push_number以及其他一些列。目标:按程序类型和推送编号计算所有DISTINCT程序名称到目前为止,我有:DECLARE @push_number INT;SET @push_number = [HERE_ADD_NUMBER];SELECT DISTINCT COUNT(*) AS Count, program_type AS [Type] FROM cm_production WHERE push_number=@push_number GROUP BY program_type这让我感到很困惑,但是它计算的是所有程序名称,而不是不同的名称(我不希望它在该查询中执行)。我想我只是无法解决如何仅选择不同程序名称而不选择它们的问题。或者其他的东西。
查看完整描述

3 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

按程序类型和推送编号计算所有DISTINCT程序名称


SELECT COUNT(DISTINCT program_name) AS Count,

  program_type AS [Type] 

FROM cm_production 

WHERE push_number=@push_number 

GROUP BY program_type

DISTINCT COUNT(*)将为每个唯一计数返回一行。您想要的是COUNT(DISTINCT <expression>):计算组中每一行的表达式并返回唯一的非空值的数量。


查看完整回答
反对 回复 2019-10-15
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

我需要获取每个不同值的出现次数。该列包含地区信息。我最终得到的简单SQL查询是:


SELECT Region, count(*)

FROM item

WHERE Region is not null

GROUP BY Region

这会给我一个清单,例如:


Region, count

Denmark, 4

Sweden, 1

USA, 10


查看完整回答
反对 回复 2019-10-15
?
手掌心

TA贡献1942条经验 获得超3个赞

您必须为不同的列创建一个派生表,然后从该表中查询计数:


SELECT COUNT(*) 

FROM (SELECT DISTINCT column1,column2

      FROM  tablename  

      WHERE condition ) as dt

这dt是一个派生表。


查看完整回答
反对 回复 2019-10-15
  • 3 回答
  • 0 关注
  • 858 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信