Sql 作为一个数字列,解码值a-E的值为1-5。@JonathanLeffler我没有意识到在联合中使用GROUP BY的必要性。至于输出,我认为数字只是用来解释所需的输出,因为数字没有任何标题。我想我误解了这一部分。作为行标识符的数字是对输出的一种“并非不可能
Sql 作为一个数字列,解码值a-E的值为1-5。@JonathanLeffler我没有意识到在联合中使用GROUP BY的必要性。至于输出,我认为数字只是用来解释所需的输出,因为数字没有任何标题。我想我误解了这一部分。作为行标识符的数字是对输出的一种“并非不可能,sql,Sql,作为一个数字列,解码值a-E的值为1-5。@JonathanLeffler我没有意识到在联合中使用GROUP BY的必要性。至于输出,我认为数字只是用来解释所需的输出,因为数字没有任何标题。我想我误解了这一部分。作为行标识符的数字是对输出的一种“并非不可能”的解释——而该列缺少标题让我停下来思考。这是一个写得有点松散的问题。@JonathanLeffler顺便说一句,在标准SQL中是否有的引用,在联合体中的每个SELECT语句中都需要一个GROUP BY子句。。非常奇怪,因为我在大学的DB课程不
作为一个数字列,解码值a-E的值为1-5。@JonathanLeffler我没有意识到在联合中使用GROUP BY的必要性。至于输出,我认为数字只是用来解释所需的输出,因为数字没有任何标题。我想我误解了这一部分。作为行标识符的数字是对输出的一种“并非不可能”的解释——而该列缺少标题让我停下来思考。这是一个写得有点松散的问题。@JonathanLeffler顺便说一句,在标准SQL中是否有
的引用,在联合体中的每个SELECT语句中都需要一个GROUP BY子句。
。非常奇怪,因为我在大学的DB课程不是这样教的。有各种可能性,包括:(1)标准已经改变;(2) 大学错了;(3) 您使用的DBMS不需要它,即使标准需要它。历史上(SQL-99、SQL-92、SQL-89、SQL-86),分组依据是必要的。在更现代的时代(SQL-2003、SQL-2008、SQL-2011),情况可能已经发生了变化。在标准SQL中,您需要在UNION中的每个SELECT语句中使用GROUP BY子句。此外,选择nits,问题中的输出是一个数字列,解码值a-E的值为1-5。@JonathanLeffler我没有意识到需要使用GROUP BY in union。至于输出,我认为数字只是用来解释所需的输出,因为数字没有任何标题。我想我误解了这一部分。作为行标识符的数字是对输出的一种“并非不可能”的解释——而该列缺少标题让我停下来思考。这是一个写得有点松散的问题。@JonathanLeffler顺便说一句,在标准SQL中是否有的引用,在联合体中的每个SELECT语句中都需要一个GROUP BY子句。
。非常奇怪,因为我在大学的DB课程不是这样教的。有各种可能性,包括:(1)标准已经改变;(2) 大学错了;(3) 您使用的DBMS不需要它,即使标准需要它。历史上(SQL-99、SQL-92、SQL-89、SQL-86),分组依据是必要的。在更现代的时代(SQL-2003、SQL-2008、SQL-2011),情况可能已经发生了变化。由于GROUP
是一个保留字,需要将其括在WHERE子句的括号中,但我确信您知道这一点,只是忘记了:)而且我无法运行此操作而不会在GROUP BY
语句中出错:无效的列名GroupID和Decode相同。您是正确的,GROUP是保留关键字。我会解决的。SQL处理该问题的标准方法是在名称周围使用双引号将其转换为分隔标识符。Microsoft SQL Server使用方括号(我相信Sybase也使用方括号)。MySQL使用反勾号进行作业。等等。我所知道的所有SQL DBMS都支持双引号。啊,我没有看问题的标签,只是假设它是SQL Server,因此括号;)由于GROUP
是一个保留字,它需要在WHERE子句中用括号括起来,但我确信您知道这一点,只是忘记了:)而且我无法运行此操作而在GROUP BY
语句中出错:无效的列名GroupID和相同的Decode。正确的是,GROUP是一个保留关键字。我会解决的。SQL处理该问题的标准方法是在名称周围使用双引号将其转换为分隔标识符。Microsoft SQL Server使用方括号(我相信Sybase也使用方括号)。MySQL使用反勾号进行作业。等等。我所知道的所有SQL DBMS都支持双引号。啊,我没有看问题的标签,只是假设它是SQL Server,因此括号;)
ID GROUP NAME
1 1,2, Supreeth
2 1,2,5, Aishu
3 3, Arvi
4 4,5, Gani
5 4,3,2, Jyo
6 3,2,1, Upi
7 2,3,4,1,5, Savi
DECODE Count
1 A 4
2 B 5
3 C 4
4 D 3
5 E 3
select count(*) from s_c where age like '%1%' and '%2%' and '%3%';
SELECT 1 AS GroupID, 'A' AS Decode, COUNT(*) AS GroupCount
FROM AnonymousTable
WHERE "group" LIKE '%1%'
GROUP BY GroupID, Decode
UNION
SELECT 2 AS GroupID, 'B' AS Decode, COUNT(*) AS GroupCount
FROM AnonymousTable
WHERE "group" LIKE '%1%'
GROUP BY GroupID, Decode
UNION
SELECT 3 AS GroupID, 'C' AS Decode, COUNT(*) AS GroupCount
FROM AnonymousTable
WHERE "group" LIKE '%1%'
GROUP BY GroupID, Decode
UNION
SELECT 4 AS GroupID, 'D' AS Decode, COUNT(*) AS GroupCount
FROM AnonymousTable
WHERE "group" LIKE '%1%'
GROUP BY GroupID, Decode
UNION
SELECT 5 AS GroupID, 'E' AS Decode, COUNT(*) AS GroupCount
FROM AnonymousTable
WHERE "group" LIKE '%1%'
GROUP BY GroupID, Decode
Users UserGroups Groups
ID Name UserID GroupID ID Decode
1 Supreeth 1 1 1 A
2 Aishu 1 2 2 B
3 Arvi 2 1 3 C
4 Gani 2 2 4 D
5 Jyo 2 5 5 E
6 Savi 3 3
4 4
4 5
...
SELECT u.GroupID, g.Decode, COUNT(*) AS Count
FROM UserGroups AS u
JOIN Groups AS g ON u.GroupID = g.ID
GROUP BY u.GroupID, g.Decode
SELECT 1 AS [Num], 'A' AS Decode, COUNT(*) AS [Count] FROM my_table WHERE [Group] LIKE '%1%'
UNION
SELECT 2 AS [Num], 'B' AS Decode, COUNT(*) AS [Count] FROM my_table WHERE [Group] LIKE '%2%'
UNION
SELECT 3 AS [Num], 'C' AS Decode, COUNT(*) AS [Count] FROM my_table WHERE [Group] LIKE '%3%'
UNION
SELECT 4 AS [Num], 'D' AS Decode, COUNT(*) AS [Count] FROM my_table WHERE [Group] LIKE '%4%'
UNION
SELECT 5 AS [Num], 'E' AS Decode, COUNT(*) AS [Count] FROM my_table WHERE [Group] LIKE '%5%'
SELECT Decode,
COUNT(*)
FROM
(
SELECT ID,
CHAR(64+CONVERT(INT,String)) AS Decode,
string
FROM
(
SELECT A.[id],
Split.a.value('.', 'VARCHAR(100)') AS String
FROM
(
SELECT id,
CAST ('<M>' + REPLACE(SUBSTRING([GROUP],0,LEN([GROUP])), ',', '</M><M>') + '</M>' AS XML) AS String
FROM Table1
) AS A CROSS APPLY String.nodes ('/M') AS Split(a)
) T1
) T2
GROUP BY Decode
ORDER BY Decode