Mysql
 sql >> база данни >  >> RDS >> Mysql

Филтриране на студенти, които все още не са преминали предмет

Предлагам да използвате агрегиране:

SELECT `Reg.No`, SubjectCode, SUM(`Pass/Fail` = 'Pass')
FROM results
GROUP  BY `Reg.No`, SubjectCode
HAVING SUM(`Pass/Fail` = 'Pass') = 0;

HAVING клаузата отчита броя на резултатите за всеки студент и курс, където последната колона е 'Pass' . В MySQL булевите стойности се третират като цели числа в числов контекст, като true е 1. И така, sum( Успешно/Неуспешно= 'Pass') отчита колко пъти даден студент е преминал курса. = 0 казва, че студентът никога не е преминал курса.

Като предложение, не поставяйте специални знаци като / и . в имената на колоните. Това изисква избягване на колоните и просто прави кода по-труден за писане, защото е пълен с обратни отметки.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. промяна на формата на датата по подразбиране laravel sql заявка

  2. Грешка:Методът или операцията не са внедрени. докато скелета на базата данни на MYSQL

  3. NodeJS сървър с mysql увисва

  4. Каква е разликата между libmysqlclient.a и libmysqlclient_r.a?

  5. count(*) и count(column_name), каква е разликата?