【问题标题】:Grades display in java and sql [closed]成绩以java和sql显示[关闭]
【发布时间】:2014-06-13 04:23:21
【问题描述】:

我有如图所示的 sql 表

Name  |eng    |kisw
Jane  |A      |B
Ann   |B      |B
Mag   |B      |B

我需要像Eng A=1 B=2Kisw B=3 这样计算成绩

我有sql代码但显示错误数据

SELECT name,COUNT(eng),COUNT(kisw) FROM form1 GROUP BY eng ,kisw 

【问题讨论】:

  • 这里的计算是什么意思?总和?
  • A 怎么会是 3?应该是1吧?
  • 请在您的问题中更具体

标签: java sql


【解决方案1】:

我想,这会有所帮助:

SELECT 'ENG' as SUBJECT, ENG AS GRADE, COUNT(ENG) AS GRADE_COUNT FROM YOUR_TABLE GROUP BY ENG
UNION
SELECT 'KISW' AS SUBJECT, KISW AS GRADE, COUNT(KISW) AS GRADE_COUNT FROM YOUR_TABLE GROUP BY KISW

输出是:

ENG     |A   |1
ENG     |B   |2
KISW    |B   |3

要运行测试查询,请使用:

WITH TEST_DATA AS
(
SELECT 'JANE' NAME, 'A' ENG, 'B' KISW FROM DUAL
UNION
SELECT 'ANN' NAME, 'B' ENG, 'B' KISW FROM DUAL
UNION
SELECT 'MAG' NAME, 'B' ENG, 'B' KISW FROM DUAL

)

SELECT 'ENG' SUBJECT, ENG GRADE, COUNT(ENG) GRADE_COUNT FROM TEST_DATA GROUP BY ENG
UNION
SELECT 'KISW' SUBJECT, KISW GRADE, COUNT(KISW) GRADE_COUNT FROM TEST_DATA GROUP BY KISW

【讨论】:

  • 非常感谢您的回答
【解决方案2】:

试试这个会有帮助

select name,
    sum(eng = 'A') totalA,
    sum(eng= 'B') totalB,
    sum(eng = 'C') totalC
from student
group by name

更多详情请访问此

【讨论】:

    猜你喜欢
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 2016-03-24
    相关资源
    最近更新 更多