Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在同一个表中运行多个计数/统计报表的最佳方法?_Sql_Sqlite - Fatal编程技术网

Sql 在同一个表中运行多个计数/统计报表的最佳方法?

Sql 在同一个表中运行多个计数/统计报表的最佳方法?,sql,sqlite,Sql,Sqlite,我正试图收集一些有关员工的统计信息。下面的查询将用于收集SELECT语句中有关特定地区特定学校的所有适用信息 我现在真正喜欢做的是能够对同一地区内的不同学校运行SELECT语句来比较一个地区内的学校,或者甚至可以相互比较地区 但是,所有数据都在一个表中。显然,我不能在查询中一个接一个地放入多个语句。我试着在他们之间加入工会,但也没用 SELECT WorkLocationName AS District, SchoolName AS School, COUNT(FileNumber) AS Re

我正试图收集一些有关员工的统计信息。下面的查询将用于收集SELECT语句中有关特定地区特定学校的所有适用信息

我现在真正喜欢做的是能够对同一地区内的不同学校运行SELECT语句来比较一个地区内的学校,或者甚至可以相互比较地区

但是,所有数据都在一个表中。显然,我不能在查询中一个接一个地放入多个语句。我试着在他们之间加入工会,但也没用

SELECT WorkLocationName AS District, SchoolName AS School, COUNT(FileNumber) AS Records,MIN(strftime('%Y', date('now')) - BirthYear) AS MinAge,MAX(strftime('%Y', date('now')) - BirthYear) AS MaxAge,
    AVG(strftime('%Y', date('now')) - BirthYear) AS AvgAge,
    (MIN(CAST(replace(replace(TotSalary,',',''),'$','') AS REAL))) As MinSalary,
    (MAX(CAST(replace(replace(TotSalary,',',''),'$','') AS REAL))) As MaxSalary,
    (AVG(CAST(replace(replace(TotSalary,',',''),'$','') AS REAL))) As AvgSalary
FROM DPISTAFF2015_2016
WHERE CAST(replace(replace(TotSalary,',',''),'$','') AS REAL) > 0.00
    AND WorkLocationName = 'XXX Sch Dist'
    AND SchoolName = 'XXX High'

我想知道在这一点上最好的做法是什么。我可以使用SELECT DISTINCT school Name来获取学校的唯一列表,并使用WHERE来获取某个地区唯一的学校,但我如何执行我拥有的SELECT语句,即每个学校或地区的计数记录、最大和最小年龄、最大和最小工资等?

我想您正在寻找分组依据:

您应该修复表,以便将数字存储为数字,而不是字符串

SELECT WorkLocationName, SchoolName,
       COUNT(FileNumber) AS Records,
       MIN(strftime('%Y', date('now')) - BirthYear) AS MinAge,
       MAX(strftime('%Y', date('now')) - BirthYear) AS MaxAge,
       AVG(strftime('%Y', date('now')) - BirthYear) AS AvgAge,
       MIN(CAST(replace(replace(TotSalary, ',', ''), '$', '') AS REAL)) As MinSalary,
       MAX(CAST(replace(replace(TotSalary, ',', ''), '$', '') AS REAL)) As MaxSalary,
       AVG(CAST(replace(replace(TotSalary, ',', ''), '$', '') AS REAL)) As AvgSalary
FROM DPISTAFF2015_2016
WHERE CAST(replace(replace(TotSalary, ',', ''), '$', '') AS REAL) > 0.00
GROUP BY WorkLocationName, SchoolName;