Sql 2017年向不同类别颁发的最大许可证数量
我想找出2017年针对不同类别颁发的最大许可证数量。请帮忙Sql 2017年向不同类别颁发的最大许可证数量,sql,sql-server,Sql,Sql Server,我想找出2017年针对不同类别颁发的最大许可证数量。请帮忙 SELECT YEAR(BL.[Issued]) as YearIssuesd, BL.[Category] as Category, COUNT(*) as TotalLicenceIssued from [dbo].[businesslicences$] BL GROUP BY YEAR(BL.[Issued]), (BL.[Category]) HAVING COUNT
SELECT
YEAR(BL.[Issued]) as YearIssuesd,
BL.[Category] as Category,
COUNT(*) as TotalLicenceIssued
from
[dbo].[businesslicences$] BL
GROUP BY
YEAR(BL.[Issued]),
(BL.[Category])
HAVING
COUNT(*) = (
SELECT
MAX(MC)
FROM
(
SELECT
COUNT( BL.[Licence No#] ) AS MC
from
[dbo].[businesslicences$] BL
GROUP BY BL.[Category]
)
2017年向不同类别颁发的最大许可证数量
我想找出2017年针对不同类别颁发的最大许可证数量
您编写的很少,也没有提供源表数据和预期输出数据的示例。但我推断你想要这样的东西
SELECT
YEAR( bl.Issued ) AS YearIssued, /* This will always be '2017' due to the WHERE clause */
bl.Category,
COUNT(*) AS Number_of_licenses_issued_this_year_in_this_category
FROM
dbo.[BusinessLicenses$] AS bl
WHERE
YEAR( bl.Issued ) = 2017
GROUP BY
YEAR( bl.Issued ),
bl.Category
要获取单个最大值,请使用Top1。。。按本年颁发的本类别描述中的许可证数量排序
:
SELECT
TOP 1
YEAR( bl.Issued ) AS YearIssued, /* This will always be '2017' */
bl.Category,
COUNT(*) AS Number_of_licenses_issued_this_year_in_this_category
FROM
dbo.[BusinessLicenses$] AS bl
WHERE
YEAR( bl.Issued ) = 2017
GROUP BY
YEAR( bl.Issued ),
bl.Category
ORDER BY
Number_of_licenses_issued_this_year_in_this_category DESC
但要求“2017年针对不同类别颁发的许可证的最大数量”是没有意义的,因为“最大数量X”要求X是一组值,但在您发布的查询中,X只是一个标量(计数(*)的结果)
换句话说,我希望从2016年到2018年,每年有最多数量的许可证发放。但是[license No#]中的值是varchar,因此我无法应用聚合函数
预期结果
年
类别
许可证计数
2016
A.
3452
2017
B
345
2018
D
7876
看起来你只是想要发布的总数量(每个类别,每年)。“不同类别的最大数量”是什么意思?
dbo.businesslicenses$
的CREATE TABLE
语句是什么?为什么表名中有一个美元符号?$symbol的存在是因为数据库名和表名是相同的,$
不是这样的(请参阅),因为它在方括号中转义,所以它是字面上理解的——除非有歧义,否则名称是否相同并不重要。如果我的答案不是你想要的,那么你的问题就太不清楚了。请发布您的输入数据和预期输出数据的样本。我希望每个类别的最大许可证数量year@AnkitSharma我认为当你说“每年每类最多”时,你没有正确使用术语。你明白我为什么说那是毫无意义的声明吗?没有最大值,因为每年每个类别只有一个标量值。我想为我的数据库派生一个KPI。其中,我必须在许可证编号计数上实现聚合函数,如MAX、AVG