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

Как мога да присвоя стойност на променлива, използвайки агрегатна функция в mysql?

Използване на дефинирана от потребителя сесия променлива в where клаузата е възможна само когато е предварително инициализирана . Освен ако не е друго, поради SQL- Заявка-Ред на операции , променливата ще има NULL по подразбиране и условието може да не отговаря на очакваните резултати.

set @var:=0;

SELECT
      sClass class,
      @var := cast(sum(maths+physics+chemistry)
                   /(count(sid)*3) as decimal(6,2)
              ) as avgMarksPerSubject,
      @var as variableValue,
      count(sid) as numberOfStudents
FROM  StudentInformation
where @var < 65
group by sClass
;

+-------+--------------------+---------------+------------------+
| CLASS | AVGMARKSPERSUBJECT | VARIABLEVALUE | NUMBEROFSTUDENTS |
+-------+--------------------+---------------+------------------+
| 11th  |              72.13 |             0 |                5 |
| 12th  |              60.83 |             0 |                4 |
+-------+--------------------+---------------+------------------+

Тук можете ясно да видите, че на променливата не е присвоена стойност на ред и от стойността, изчислена в предишния израз на колона.

Можете да видите страничните му ефекти, като изпълните следната заявка:

select * from (
  SELECT
      sClass class,
      @var := cast(sum(maths+physics+chemistry)
                   /(count(sid)*3) as decimal(6,2)
              ) as avgMarksPerSubject,
      @var as variableValue,
      count(sid) as numberOfStudents
  FROM StudentInformation
  group by sClass
) r where avgMarksPerSubject > 65

+-------+--------------------+---------------+------------------+
| CLASS | AVGMARKSPERSUBJECT | VARIABLEVALUE | NUMBEROFSTUDENTS |
+-------+--------------------+---------------+------------------+
| 11th  |              72.13 |         60.83 |                5 |
+-------+--------------------+---------------+------------------+

Пример @ SQL Fiddle :




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Въпрос на изявление на MYSQL if

  2. Не мога да намеря метода UseMysql в DbContextOptions

  3. Как да съхранявам показатели за моето уеб приложение?

  4. Как да избегнете ключова дума със стойност в mysql, докато използвате оператор Select

  5. Как да експортирате MySQL схема с данни?