sql server 数据排名

本文通过SQL查询展示了2017年3月4日中国各城市的空气质量排名,并提供了北京从2017年2月1日至3月5日的空气质量指数(AQI)变化曲线。通过对PM2.5、PM10等指标的平均值计算,揭示了不同城市间的空气质量差异。

城市排名列表

SELECT c.sheng ,m.city, RANK() OVER (ORDER BY round(avg(cast(indexs as float)),3)) AS px,
         round(avg(cast(pm25 as float)),0) pm25, round(avg(cast(pm10 as float)),0) pm10, round(avg(cast(co as float)),3) co, 
        round(avg(cast(no2 as float)),0) no2, round(avg(cast(so2 as float)),0) so2,round(avg(cast(o3_8 as float)),0) o3_8,round(avg(cast(indexs as float)),3) indexs,round(avg(cast(aqi as float)),0) aqi
          FROM monitor_city_hour m,cd_city c
          where m.city=c.city and
          datetime='2017-03-04 12:00:00' and aqi!=0 and pm25!=0 and pm25 is not null
          group by c.sheng,m.city
          order by indexs

某城市一段时间的排名曲线

 select fdate time,px,aqi from(
        SELECT fdate,city,RANK() OVER (partition by fdate ORDER BY aqi) AS px,aqi
          FROM monitor_city_day 
          where  aqi!=0 and pm25!=0 and pm25 is not null
          and cast(fdate as datetime)>=cast('2017-02-01' as datetime) and
          cast(fdate as datetime)<=cast('2017-03-05' as datetime)
          )a where city='北京'
          order by cast(fdate as datetime)

 

### SQL Server 中与数据类型相关的最新特性和更新 尽管当前提供的引用并未直接提及关于 SQL Server 数据类型的新增特性或更新,但从 Microsoft 官方文档和其他资源中可以了解到一些相关内容。以下是有关 SQL Server 2022 和其他较新版本中与数据类型相关的改进和特性: #### 1. **JSON 支持增强** 虽然 JSON 不是一个新的数据类型,但在 SQL Server 2022 中对其支持进行了显著增强。通过 `JSON_OBJECT` 函数[^2],用户可以从零个或多个表达式中动态构建 JSON 对象。这使得处理复杂的数据结构变得更加灵活。 ```sql DECLARE @json NVARCHAR(MAX); SET @json = JSON_OBJECT( key1: 'value1', key2: 123, key3: NULL ); SELECT @json AS JsonOutput; ``` 此功能允许开发者更高效地将关系型数据转换为 JSON 格式,适用于现代应用程序的需求。 --- #### 2. **窗口函数扩展** SQL Server 2022 的 T-SQL 增强包括对窗口函数的支持改进[^1]。这些变化不仅提高了查询性能,还增强了对复杂计算场景的支持能力。例如,在涉及排名、聚合或其他分析操作时,窗口函数的表现更加出色。 ```sql WITH SampleData AS ( SELECT EmployeeID, DepartmentID, Salary FROM Employees ) SELECT *, PERCENT_RANK() OVER (PARTITION BY DepartmentID ORDER BY Salary DESC) AS PercentRank FROM SampleData; ``` 这种改进间接影响了如何定义和使用某些数据类型(如浮点数或整数),因为它们可能作为窗口函数的结果被返回。 --- #### 3. **Temporal Tables 时间表优化** 虽然 Temporal Table 并不是一个全新的数据类型,但它依赖于特定的时间戳列来记录历史数据。在 SQL Server 2022 中,时间表的功能得到了进一步完善,特别是在存储效率和查询速度方面有所提升。这意味着如果应用需要频繁访问历史数据,则可以通过调整相关配置获得更好的体验。 ```sql CREATE TABLE SalesHistory ( SaleID INT PRIMARY KEY, Amount DECIMAL(18, 2), SaleDate DATETIME2 GENERATED ALWAYS AS ROW START HIDDEN NOT NULL, ValidTo DATETIME2 GENERATED ALWAYS AS ROW END HIDDEN NOT NULL, PERIOD FOR SYSTEM_TIME(SaleDate, ValidTo) ) WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.SalesHistoryArchive)); ``` 上述代码展示了如何利用系统版本控制机制自动维护历史记录,而无需手动管理额外的时间戳字段。 --- #### 4. **BIGINT 性能改进** 对于大数据量的应用程序而言,`BIGINT` 类型的操作在过去可能存在一定的性能瓶颈。然而,在最新的 SQL Server 版本中,微软针对此类大数值运算做了多项底层优化,从而减少了 CPU 开销并提升了整体吞吐量。 --- #### 5. **STRING_AGG 功能加强** 尽管 `STRING_AGG` 是一种用于字符串拼接的聚合函数而非传统意义上的数据类型,但其行为直接影响到 VARCHAR/NVARCHAR 等字符类别的实际用途。随着 SQL Server 2022 的推出,该函数现在能够更好地兼容多字节编码环境下的文本处理需求。 ```sql SELECT STRING_AGG(Name, ', ') WITHIN GROUP (ORDER BY Name ASC) AS ConcatenatedNames FROM Customers; ``` 这一改动有助于简化跨文化部署过程中遇到的各种挑战。 --- ### 结论 综上所述,虽然 SQL Server 2022 没有引入完全崭新的基础数据类型,但对于现有类型及其配套工具链却做出了不少有意义的技术革新。无论是从功能性还是效能角度来看,这些进步都极大地拓宽了数据库开发人员的选择范围,并促进了业务逻辑实现方式上的创新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值