Sql (按类别分类和分组) 使用CTE选择具有类别和最小百分比的单独条件检查的数据 使用UNION仅获取不同的记录作为最终输出 让我先告诉你几件事,我的代码是一个,但那一次我只有一个表,而不是三个表。所有信息都存储在一个表中。在DB中进行更改后,我不知道如何在q
(按类别分类和分组)Sql (按类别分类和分组) 使用CTE选择具有类别和最小百分比的单独条件检查的数据 使用UNION仅获取不同的记录作为最终输出 让我先告诉你几件事,我的代码是一个,但那一次我只有一个表,而不是三个表。所有信息都存储在一个表中。在DB中进行更改后,我不知道如何在q,sql,sql-server,select,Sql,Sql Server,Select,(按类别分类和分组) 使用CTE选择具有类别和最小百分比的单独条件检查的数据 使用UNION仅获取不同的记录作为最终输出 让我先告诉你几件事,我的代码是一个,但那一次我只有一个表,而不是三个表。所有信息都存储在一个表中。在DB中进行更改后,我不知道如何在queryYou说您编写了所有代码,但不知道如何连接这三个表并重用这些代码?我尝试使用连接,但没有得到任何结果。。。有人在这方面帮我Raj你能帮我吗?你说“什么都没得到”是什么意思?你有没有试着加入桌子从表1中选择*作为t1内部联接表2作为t1上
让我先告诉你几件事,我的代码是一个,但那一次我只有一个表,而不是三个表。所有信息都存储在一个表中。在DB中进行更改后,我不知道如何在queryYou说您编写了所有代码,但不知道如何连接这三个表并重用这些代码?我尝试使用连接,但没有得到任何结果。。。有人在这方面帮我Raj你能帮我吗?你说“什么都没得到”是什么意思?你有没有试着加入桌子<代码>从表1中选择*作为t1内部联接表2作为t1上的t2。RollNo=t2.id内部联接表3作为t2上的t3.id=t3.id我想要查询中的确切学生人数。例如,我想要sc类别的5名学生和st类别的10名学生,这在你的查询中是如何实现的..我将感谢你的帮助..我想在工作查询中使用join。。不仅仅是我提出了这个问题sumbody在这方面帮助了我你如何决定你需要选择5个或10个学生?最高百分比?如果它们中的任何一个具有相同的百分比,您将需要添加某种附加类型。那会是什么呢?如果其中任何一个有相同的百分比,那么我们需要根据类别对它们进行排序。如果两名学生(1名来自SC,1名来自OBC)的比例相同,则优先选择i OBC学生。
| Roll No | Applicant Name| Gender | Category | Father's Name |
|------------|---------------|------------|------------|----------------|
| 001 | A | M | SC | as |
| 002 | B | F | ST | hg |
| 003 | C | F | ST | yj |
| 004 | D | M | OBC | uy |
| 005 | E | F | SC | bn |
| 006 | F | M | OBC | kl |
| 007 | E | F | Gen | bn |
| 008 | F | M | OBC | vg |
| 009 | E | F | Gen | gh |
| 010 | F | M | SC | we |
|------------|---------------|------------|------------|----------------|
| ID | Semester | Major | Applied Course|
|------------|---------------|------------|---------------|
| 001 | 1 | English | B.A |
| 002 | 1 | English | B.A |
| 003 | 1 | History | B.A |
| 004 | 1 | botany | B.Sc |
| 005 | 1 | Hindi | B.A |
| 006 | 1 | History | B.A |
| 007 | 1 | Maths | B.A |
| 008 | 1 | Hindi | B.A |
| 009 | 1 | History | B.A |
| 010 | 1 | Pol.Science| B.A |
|------------|---------------|------------|---------------|
| ID |Plus2Percentage|
|------------|---------------|
| 001 | 60 |
| 002 | 65 |
| 003 | 70 |
| 004 | 73 |
| 005 | 87 |
| 006 | 91 |
| 007 | 59 |
| 008 | 78 |
| 009 | 88 |
| 010 | 57 |
|------------|---------------|-
| Roll No |Plus2Percentage| Category |
|------------|---------------|-----------|
| 005 | 87 | SC |
| 001 | 60 | SC |
| 003 | 70 | ST |
| 002 | 65 | ST |
| 006 | 91 | OBC |
| 009 | 88 | Gen |
| 008 | 78 | OBC |
|------------|---------------|-----------|
WITH PRIMARY_CHOICE AS (
SELECT
RollNo,
ApplicantName,
FatherName,
Gender,
Major,
Category,
Plus2Percentage
FROM (
SELECT
RollNo,
ApplicantName,
FatherName,
Gender,
Semester,
Major,
AppliedCourse,
Category,
Plus2Percentage,
row_number() over (partition by Category, Semester, Major, AppliedCourse order by Plus2Percentage desc) as rn
FROM [College Management System].[dbo].[ApplicantPersonalDetail]
) as T
WHERE
rn <= CASE
WHEN Category='SC' AND Semester='1' AND AppliedCourse= 'B.A' AND Plus2Percentage >= '60' THEN '2'
WHEN Category='ST' AND Semester= '1' AND AppliedCourse= 'B.A' AND Plus2Percentage >= '65'THEN '2'
WHEN Category='OBC' AND Semester= '1' AND AppliedCourse= 'B.A' AND Plus2Percentage >= '60' THEN '1'
ELSE 0
END
)
SELECT
RollNo,
ApplicantName,
FatherName,
Gender,
Major,
Category,
Plus2Percentage
FROM PRIMARY_CHOICE
UNION ALL
SELECT
RollNo,
ApplicantName,
FatherName,
Gender,
Major,
Category,
Plus2Percentage
FROM (
SELECT
RollNo,
ApplicantName,
FatherName,
Gender,
Semester,
Major,
AppliedCourse,
Category,
Plus2Percentage,
row_number() over (partition by Semester, Major1, AppliedCourse order by Plus2Percentage desc) as rn
FROM [College Management System].[dbo].[ApplicantPersonalDetail] x
WHERE NOT EXISTS (
select 1 from primary_choice y
where x.RollNo = y.RollNo
)
) AS T2
WHERE
rn <= 2
AND Semester = @semester
AND AppliedCourse = 'B.A'
AND Plus2Percentage >= 70
order by Plus2Percentage desc
SELECT RollNo, Plus2Percentage, Category
FROM TABLE1 a
INNER JOIN Table3 b on a.rollno=b.id
WHERE a.category='SC' and b.Plus2Percentage>=60
CREATE PROCEDURE usp_SelectCategorywiseData
AS
BEGIN
SET NOCOUNT ON;
DECLARE @tbl_LIST TABLE (RollNo int, [Plus2Percentage] int, Category varchar(10));
WITH CTE AS
(
SELECT A.RollNo, P.Percentage AS [Plus2Percentage], A.Category
, row_number() OVER (PARTITION BY A.Category ORDER BY P.Percentage DESC) AS Rank
FROM APPLICANT A INNER JOIN Plus2Percentage P ON A.RollNo = P.ID
)
INSERT INTO @tbl_LIST
SELECT RollNo, Plus2Percentage as [Plus2Percentage], Category
FROM CTE
WHERE rank <=
CASE
WHEN Category='SC' AND [Plus2Percentage] >= '60' THEN '2'
WHEN Category='ST' AND [Plus2Percentage] >= '60' THEN '2'
WHEN Category='OBC' AND [Plus2Percentage] >= '55' THEN '1'
ELSE 0
End
INSERT INTO @tbl_LIST
SELECT TOP 2 A.RollNo, P.Percentage as [Plus2Percentage], A.Category
FROM APPLICANT A INNER JOIN Plus2Percentage P ON A.RollNo = P.ID
WHERE Percentage > 70 and RollNo NOT IN (SELECT RollNo FROM @tbl_LIST) ORDER BY P.Percentage DESC
SELECT * FROM @tbl_LIST
END