SELECT cust_id,COUNT(*) AS orders FROM orders GROUP BY cust_id;
SELECT cust_id,COUNT(*) AS orders FROM orders GROUP BY cust_id HAVING COUNT(*)>=2;
SELECT vend_id,COUNT(*) AS num_prod FROM products GROUP BY vend_id HAVING COUNT(*)>=2;
SELECT vend_id,COUNT(*) AS num_prod FROM products WHERE prod_price>=10 GROUP BY vend_id HAVING COUNT(*)>=2;
SELECT vend_id,COUNT(*) AS num_prod FROM products WHERE prod_price>=10 GROUP BY vend_id HAVING num_prod>=2;
SELECT order_num,SUM(item_price*quantity) AS ordertotal FROM orderitems GROUP BY order_num HAVING SUM(item_price*quantity)>=50;
SELECT order_num,SUM(item_price*quantity) AS ordertotal FROM orderitems GROUP BY order_num HAVING ordertotal>=50;
SELECT order_num,SUM(item_price*quantity) AS ordertotal FROM orderitems GROUP BY order_num HAVING SUM(item_price*quantity)>=50 ORDER BY order_num;
SELECT order_num,SUM(item_price*quantity) AS ordertotal FROM orderitems GROUP BY order_num HAVING ordertotal>=50 ORDER BY order_num;
SELECT order_num,SUM(item_price*quantity) AS ordertotal FROM orderitems GROUP BY order_num HAVING SUM(item_price*quantity)>=50 ORDER BY ordertotal;
SELECT order_num,SUM(item_price*quantity) AS ordertotal FROM orderitems GROUP BY order_num HAVING ordertotal>=50 ORDER BY ordertotal;
过滤、分组和排序
过滤:WHERE/HAVING
分组:GROUP BY
排序:ORDER BY
SELECT cust_id,COUNT(*) AS orders FROM orders GROUP BY cust_id;
cust_id | orders |
10001 | 2 |
10003 | 1 |
10004 | 1 |
10005 | 1 |
SELECT cust_id,COUNT(*) AS orders FROM orders GROUP BY cust_id HAVING COUNT(*) >=2;
cust_id | orders |
10001 | 2 |
关于WHERE 和 HAVING
WHERE 过滤行,HAVING 过滤分组
SELECT vend_id,prod_price FROM products;
vend_id | prod_price |
1001 | 5.99 |
1001 | 9.99 |
1001 | 14.99 |
1003 | 13.00 |
1003 | 10.00 |
1003 | 2.50 |
1002 | 3.42 |
1005 | 35.00 |
1005 | 55.00 |
1002 | 8.99 |
1003 | 50.00 |
1003 | 4.49 |
1003 | 2.50 |
1003 | 10.00 |
SELECT vend_id,COUNT(*) AS num_prod FROM products GROUP BY vend_id;
vend_id | num_prod |
1001 | 3 |
1002 | 2 |
1003 | 7 |
1005 | 2 |
SELECT vend_id,prod_price FROM products WHERE prod_price>=10;
vend_id | prod_price |
1001 | 14.99 |
1003 | 13.00 |
1003 | 10.00 |
1005 | 35.00 |
1003 | 55.00 |
1003 | 50.00 |
1003 | 10.00 |
SELECT vend_id,COUNT(*) AS num_prod FROM products WHERE prod_price>=10 GROUP BY vend_id;
vend_id | num_prod |
1001 | 1 |
1003 | 4 |
1005 | 2 |
SELECT vend_id,COUNT(*) AS num_prod FROM products WHERE prod_price>=10 GROUP BY vend_id HAVING COUNT(*)>=2;
vend_id | num_prod |
1003 | 4 |
1005 | 2 |