SELECT d.dept_name AS "部门名称", e.emp_name AS "姓名", e.salary AS "月薪",
ROW_NUMBER() OVER w AS "row_number",
RANK() OVER w AS "rank",
DENSE_RANK() OVER w AS "dense_rank",
PERCENT_RANK() OVER w AS "percent_rank"
FROM employee e
JOIN department d ON (e.dept_id = d.dept_id)
WINDOW w AS (PARTITION BY e.dept_id ORDER BY e.salary DESC);
部门名称 |姓名 |月薪 |row_number|rank|dense_rank|percent_rank |
-----+---+--------+----------+----+----------+-------------------+
行政管理部|刘备 |30000.00| 1| 1| 1| 0.0|
行政管理部|关羽 |26000.00| 2| 2| 2| 0.5|
行政管理部|张飞 |24000.00| 3| 3| 3| 1.0|
人力资源部|诸葛亮|24000.00| 1| 1| 1| 0.0|
人力资源部|黄忠 | 8000.00| 2| 2| 2| 0.5|
人力资源部|魏延 | 7500.00| 3| 3| 3| 1.0|
...
CREATE TABLE test(id INT);
INSERT INTO test VALUES(100);
SELECT *
FROM test
WHERE 1 IS NOT DISTINCT FROM 1;
id |
---+
100|
SELECT *
FROM test
WHERE 1 IS NOT DISTINCT FROM 2;
id|
--+
SELECT *
FROM test
WHERE NULL IS NOT DISTINCT FROM NULL;
id |
---+
100|
SELECT *
FROM test
WHERE NULL = NULL;
id|
--+
DECLARE @date DATETIME2 = '2022-11-20 21:22:11';
DECLARE @orign DATETIME2 = '2022-11-01 00:00:00';
SELECT DATE_BUCKET(WEEK, 1, @date, @orign);
|
-----------------------+
2022-11-15 00:00:00.000|
SELECT DATE_BUCKET(WEEK, 2, @date, @orign);
|
-----------------------+
2022-11-15 00:00:00.000|
SELECT DATE_BUCKET(WEEK, 3, @date, @orign);
|
-----------------------+
2022-11-01 00:00:00.000|
SELECT value FROM GENERATE_SERIES(1, 5);
value
-----------
1
2
3
4
5
SELECT value FROM GENERATE_SERIES(10, 1, -2);
value
-----------
10
8
6
4
2
ISJSON ( expression [, json_type_constraint] )
SELECT ISJSON('true', VALUE);
SELECT ISJSON('test string', VALUE);
DECLARE @jsonInfo NVARCHAR(MAX)
SET @jsonInfo=N'{"info":{"address":[{"town":"Paris"},{"town":"London"}]}}';
SELECT JSON_PATH_EXISTS(@jsonInfo,'$.info.address'); -- 1
SELECT JSON_OBJECT('name':'value', 'type':1);
{"name":"value","type":1}
SELECT JSON_ARRAY('a', JSON_OBJECT('name':'value', 'type':1));
["a",{"name":"value","type":1}]
SELECT GREATEST ( '6.62', 3.1415, N'7' ) AS GreatestVal,
LEAST ( '6.62', 3.1415, N'7' ) AS LeastVal;
GreatestVal|LeastVal|
-----------+--------+
7.0000| 3.1415|
SELECT * FROM STRING_SPLIT('SQL Server 2022', ' ', 1);
value |ordinal|
------+-------+
SQL | 1|
Server| 2|
2022 | 3|
DECLARE @d datetime2 = '2021-12-08 11:30:15.1234567';
SELECT 'Year', DATETRUNC(year, @d);
SELECT 'Quarter', DATETRUNC(quarter, @d);
SELECT 'Month', DATETRUNC(month, @d);
SELECT 'Week', DATETRUNC(week, @d); -- Using the default DATEFIRST setting value of 7 (U.S. English)
SELECT 'Iso_week', DATETRUNC(iso_week, @d);
SELECT 'DayOfYear', DATETRUNC(dayofyear, @d);
SELECT 'Day', DATETRUNC(day, @d);
SELECT 'Hour', DATETRUNC(hour, @d);
SELECT 'Minute', DATETRUNC(minute, @d);
SELECT 'Second', DATETRUNC(second, @d);
SELECT 'Millisecond', DATETRUNC(millisecond, @d);
SELECT 'Microsecond', DATETRUNC(microsecond, @d);
Year 2021-01-01 00:00:00.0000000
Quarter 2021-10-01 00:00:00.0000000
Month 2021-12-01 00:00:00.0000000
Week 2021-12-05 00:00:00.0000000
Iso_week 2021-12-06 00:00:00.0000000
DayOfYear 2021-12-08 00:00:00.0000000
Day 2021-12-08 00:00:00.0000000
Hour 2021-12-08 11:00:00.0000000
Minute 2021-12-08 11:30:00.0000000
Second 2021-12-08 11:30:15.0000000
Millisecond 2021-12-08 11:30:15.1230000
Microsecond 2021-12-08 11:30:15.1234560
SELECT LTRIM('123abc.' , '123.'), RTRIM('.123abc.' , 'abc.');
| |
----+----+
abc.|.123|
SELECT TRIM(LEADING '-' FROM '---SQL Server 2022---') AS lead,
TRIM(TRAILING '-' FROM '---SQL Server 2022---') AS trail,
TRIM(BOTH '-' FROM '---SQL Server 2022---') AS both;
lead |trail |both |
------------------+------------------+---------------+
SQL Server 2022---|---SQL Server 2022|SQL Server 2022|
SELECT LEFT_SHIFT(1, 5), 1<<5;
| |
--+--+
32|32|
SELECT RIGHT_SHIFT(32, 2), 32>>2;
| |
-+-+
8|8|
SELECT BIT_COUNT(10) as Count1, BIT_COUNT(0x0a) as Count2;
Count1|Count2|
------+------+
2| 2|
SELECT GET_BIT(10, 1) as Get_1st_Bit, GET_BIT(10, 2) as Get_2nd_Bit;
Get_1st_Bit|Get_2nd_Bit|
-----------+-----------+
1| 0|
SELECT SET_BIT(10, 0) as Result1, SET_BIT(10, 1, 0) as Result2;
Result1|Result2|
-------+-------+
11| 8|
原文作者:SQL编程思想;如有侵权,请联系管理员删除。