-- Good: Select only needed columnsSELECT employee_id, first_name, last_name FROM employees;-- Bad: Select all columns unnecessarilySELECT * FROM employees;
-- EmployeesSELECT * FROM PER_ALL_PEOPLE_F WHERE ROWNUM <= 10;-- Assignments SELECT * FROM PER_ALL_ASSIGNMENTS_M WHERE ROWNUM <= 10;-- JobsSELECT * FROM PER_JOBS WHERE ROWNUM <= 10;
-- InvoicesSELECT * FROM AP_INVOICES_ALL WHERE ROWNUM <= 10;-- SuppliersSELECT * FROM POZ_SUPPLIERS WHERE ROWNUM <= 10;-- PaymentsSELECT * FROM AP_INVOICE_PAYMENTS_ALL WHERE ROWNUM <= 10;
-- Purchase OrdersSELECT * FROM PO_HEADERS_ALL WHERE ROWNUM <= 10;-- Inventory ItemsSELECT * FROM EGP_SYSTEM_ITEMS_B WHERE ROWNUM <= 10;-- ShipmentsSELECT * FROM RCV_SHIPMENT_HEADERS WHERE ROWNUM <= 10;
WITH recent_invoices AS ( SELECT INVOICE_ID, INVOICE_NUM, INVOICE_AMOUNT FROM AP_INVOICES_ALL WHERE INVOICE_DATE >= ADD_MONTHS(SYSDATE, -3))SELECT ri.*, s.SUPPLIER_NAMEFROM recent_invoices ri JOIN POZ_SUPPLIERS s ON ri.VENDOR_ID = s.VENDOR_IDWHERE ROWNUM <= 100;
SELECT EMPLOYEE_ID, SALARY, DEPARTMENT_ID, AVG(SALARY) OVER (PARTITION BY DEPARTMENT_ID) AS dept_avg_salary, RANK() OVER (PARTITION BY DEPARTMENT_ID ORDER BY SALARY DESC) AS salary_rankFROM PER_EMPLOYEESWHERE ROWNUM <= 100;
-- Common date filtersSELECT * FROM table_name WHERE: -- Last 30 days creation_date >= SYSDATE - 30 -- Current month EXTRACT(MONTH FROM creation_date) = EXTRACT(MONTH FROM SYSDATE) -- Date range creation_date BETWEEN DATE '2024-01-01' AND DATE '2024-12-31' -- Fiscal year creation_date >= ADD_MONTHS(TRUNC(SYSDATE, 'YEAR'), -3)
-- Bad: Function prevents index useSELECT * FROM employees WHERE UPPER(last_name) = 'SMITH';-- Good: Use exact match when possibleSELECT * FROM employees WHERE last_name = 'Smith';
SELECT -- Employee Information emp.EMPLOYEE_NUMBER, emp.FIRST_NAME, emp.LAST_NAME, emp.EMAIL_ADDRESS, -- Job Information job.JOB_TITLE, job.JOB_CODE, -- Department Information dept.DEPARTMENT_NAME, dept.DEPARTMENT_CODE, -- Assignment Details asg.ASSIGNMENT_STATUS, asg.EFFECTIVE_START_DATE, asg.EFFECTIVE_END_DATEFROM PER_ALL_PEOPLE_F emp INNER JOIN PER_ALL_ASSIGNMENTS_M asg ON emp.PERSON_ID = asg.PERSON_ID AND SYSDATE BETWEEN asg.EFFECTIVE_START_DATE AND asg.EFFECTIVE_END_DATE LEFT JOIN PER_JOBS job ON asg.JOB_ID = job.JOB_ID LEFT JOIN HR_DEPARTMENTS dept ON asg.ORGANIZATION_ID = dept.ORGANIZATION_IDWHERE emp.PERSON_TYPE = 'EMPLOYEE' AND asg.ASSIGNMENT_TYPE = 'E' AND asg.PRIMARY_FLAG = 'Y' AND ROWNUM <= 100ORDER BY emp.EMPLOYEE_NUMBER;
-- Summary statistics templateSELECT CATEGORY_COLUMN, COUNT(*) AS record_count, SUM(AMOUNT_COLUMN) AS total_amount, AVG(AMOUNT_COLUMN) AS avg_amount, MIN(DATE_COLUMN) AS earliest_date, MAX(DATE_COLUMN) AS latest_dateFROM your_tableGROUP BY CATEGORY_COLUMNHAVING COUNT(*) > 10ORDER BY record_count DESC;