Learn SQL together (2) - SQL basic grammar

Table of contents

Data deduplication

Distinct data deduplication

aggregate function

AVG() returns the average

SUM() aggregate summation

COUNT() returns the number

MAX()/MIN() Find the maximum and minimum values

Numerical processing functions

condition filter

Usage of WHERE

IN usage

LIKE related wildcards

1.% wildcard

2._Underscore wildcard

3. [] wildcard

HAVING packet filtering

data sorting

ORDER BY data sorting


Data deduplication

Distinct data deduplication

Filter out non-duplicate vend_id from Products.

#去除重复值
SELECT DISTINCT vend_id 
FROM Products;

aggregate function

AVG() returns the average

SELECT AVG(prod_price) AS avg_price 
FROM Products;

SUM() aggregate summation

SELECT SUM(quantity) AS items_ordered 
FROM OrderItems
WHERE order_num = 20005; 

COUNT() returns the number

#count(*)返回所有值,包括null
SELECT COUNT(*) AS num_cust
FROM Customers;
#count(字段名)只返回该字段不为null的值
SELECT COUNT(cust_email) AS num_cust
FROM Customers;

MAX()/MIN() Find the maximum and minimum values

SELECT MAX(prod_price) AS max_price 
FROM Products;
SELECT dt,
       COUNT(*) AS num_items,
       MIN(prod_price) AS price_min,
       MAX(prod_price) AS price_max,
       AVG(prod_price) AS price_avg
FROM Products
GROUP BY dt;

Numerical processing functions

Numerical processing functions mainly convert numerical data into remainders, absolute values, cosine values, tangent values, etc. The specific usage is as follows:

SELECT dt,
       COUNT(*) AS num_items,
       MOD(prod_price) AS price_mod,
       ROUND(prod_price) AS price_round,
       ABS(prod_price) AS price_abs,
       SQRT(prod_price) AS price_sqrt
FROM Products
GROUP BY dt;

condition filter

Usage of WHERE

SELECT prod_name, prod_price FROM Products
 WHERE prod_price = 3.49; 
#AND
SELECT prod_id, prod_price, prod_name 
FROM Products 
WHERE vend_id = 'DLL01' AND prod_price <= 4; 
#OR
SELECT prod_name, prod_price
 FROM Products
 WHERE vend_id = 'DLL01' OR vend_id = ‘BRS01’;

IN usage

SELECT prod_name, prod_price
FROM Products
WHERE vend_id IN ( 'DLL01', 'BRS01' )
ORDER BY prod_name;

LIKE related wildcards

1.% wildcard

#查找有bean bag的字段
SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE '%bean bag%';

2._Underscore wildcard

SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE '__ inch teddy bear';

3. [] wildcard

#寻找J或M开头的姓名
SELECT cust_contact 
FROM Customers
WHERE cust_contact LIKE '[JM]%'
ORDER BY cust_contact;
#此通配符之前加一个括号可以表示否定,即寻找不是J或M开头的人
SELECT cust_contact
FROM Customers
WHERE cust_contact LIKE '[^JM]%' ORDER BY cust_contact; •

HAVING packet filtering

#对价格为4元以上的商品统计其被购买次数,并筛选出被购买两次以上的商品
SELECT vend_id, COUNT(*) AS num_prods 
FROM Products
 WHERE prod_price >= 4
 GROUP BY vend_id 
HAVING COUNT(*) >= 2;

data sorting

ORDER BY data sorting

SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price DESC, prod_name;
#分组查询过滤排序
SELECT order_num, COUNT(*) AS items FROM OrderItems
GROUP BY order_num
HAVING COUNT(*) >= 3
ORDER BY items, order_num;

Guess you like

Origin blog.csdn.net/qq_40959462/article/details/125247203