-- 1. sum
select top 10* from tblHanghoa
select sum(hh_soton) as soton from tblHanghoa
-- 2. avg
select avg(HH_GIANHAP) as gianhaptrungbinh from tblHanghoa
-- ==> tinh gia trij hang ton kho
-- ton * giatrungbinh
select sum(hh_soton) * avg(HH_GIANHAP) as tienhangtonkho from tblHanghoa
-- 3. count
select count(hh_id) from tblHanghoa
-- select * from tblNhomHanghoa
-- đếm số lượng nhóm hàng hóa được sử dụng trong bảng tblhanghoa
-- sử dụng DISTINCT
select count(distinct hh_nhh_id) soluong from tblHanghoa
select distinct hh_nhh_id from tblHanghoa
-- đếm số lượng hàng hóa trong 1 nhóm , dùng group by
select hh_nhh_id , count(hh_nhh_id) soluong from tblHanghoa group by hh_nhh_id
--- Lưu ý: khi dùng sum, avg, count, nếu có các trường khác trong câu lệnh select ===> các trường ko có hàm đi kèm ==> toàn bộ đặt sau group by (mỗi trường cách nhau bởi dấu phẩy)
select (select nhh_ten from tblNhomHanghoa where nhh_id = hh_nhh_id) tennhom
, count(hh_nhh_id) soluong
, sum(hh_soton) tongsotoncuanhom
from tblHanghoa group by hh_nhh_id
-- 4. min => lấy giá trị nhỏ nhất, max: giá trị lớn nhất
select (select hh_ma from tblhanghoa where hh_giaban = ), min (hh_Giaban), max(hh_Giaban) from tblHanghoa
-- cần lấy các nhóm hàng hóa có số tồn từ < 2000 trở lên
select (select nhh_ten from tblNhomHanghoa where nhh_id = hh_nhh_id) tennhom
, count(hh_nhh_id) soluong
, sum(hh_soton) tongsotoncuanhom
from tblHanghoa group by hh_nhh_id having sum(hh_soton) <2000
-- khồng dùng having, có thể dùng bảng tạm
select * from (
select (
select nhh_ten from tblNhomHanghoa where nhh_id = hh_nhh_id) tennhom
, count(hh_nhh_id) soluong
, sum(hh_soton) tongsotoncuanhom
from tblHanghoa group by hh_nhh_id
) t1 where tongsotoncuanhom<2000
-- 5. tạo trường tự tăng ở đầu ra
-- identity(int, 1,1)
-- cách 1:
select ROW_NUMBER() OVER(ORDER BY tennhom ASC) AS thutu, * from (
select (
select nhh_ten from tblNhomHanghoa where nhh_id = hh_nhh_id) tennhom
, count(hh_nhh_id) soluong
, sum(hh_soton) tongsotoncuanhom
from tblHanghoa group by hh_nhh_id
) t1 where tongsotoncuanhom<2000
-- cách 2: dùng 1 bảng tạm, bảng này có trường tự tăng ==> đưa dữ liệu vào bảng tạm -- lấy dữ liệu ra => có trường tự tăng
DECLARE @T TABLE (thutu int identity(1,1) , tennhom nvarchar(1000), soluong float, tongton float)
insert into @t(tennhom, soluong, tongton)
select tennhom, soluong, tongsotoncuanhom from (
select (
select nhh_ten from tblNhomHanghoa where nhh_id = hh_nhh_id) tennhom
, count(hh_nhh_id) soluong
, sum(hh_soton) tongsotoncuanhom
from tblHanghoa group by hh_nhh_id
) t1 where tongsotoncuanhom<2000
select * from @t
------------------
-- case when then end
select top 20 hh_ma, hh_ten , HH_ACTIVE
, (case
when HH_ACTIVE =1 then N'Còn sử dụng'
when HH_ACTIVE =2 then N'Đang chờ nhập'
else N'Không được sử dụng'
end) active_ten
from tblHanghoa
---------------------