Changes between Initial Version and Version 1 of SQL


Ignore:
Timestamp:
01/21/25 22:39:47 (5 weeks ago)
Author:
163080
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SQL

    v1 v1  
     1===Advanced SQL Queries and Reports for Invoices
     2
     3**1. Report: Total Revenue Generated by Each Company in the Last Year**
     4
     5{{{
     6SELECT
     7    c.company_id,
     8    c.name AS company_name,
     9    SUM(i.total_amount) AS total_revenue
     10FROM
     11    Company c
     12JOIN Invoice i ON c.company_id = i.company_id
     13WHERE
     14    i.issue_date BETWEEN NOW() - INTERVAL '1 year' AND NOW()
     15GROUP BY
     16    c.company_id, c.name
     17ORDER BY
     18    total_revenue DESC;
     19}}}
     20
     21**2. Report: Invoices Issued to Each Client and Their Total Amount**
     22{{{
     23SELECT
     24    cl.client_id,
     25    cl.name AS client_name,
     26    COUNT(i.invoice_id) AS total_invoices,
     27    SUM(i.total_amount) AS total_amount
     28FROM
     29    Client cl
     30JOIN Invoice i ON cl.client_id = i.client_id
     31GROUP BY
     32    cl.client_id, cl.name
     33ORDER BY
     34    total_amount DESC;
     35}}}
     36
     37**3. Report: List of Overdue Invoices**
     38{{{
     39SELECT
     40    i.invoice_id,
     41    i.issue_date,
     42    i.due_date,
     43    i.total_amount,
     44    cl.name AS client_name,
     45    c.name AS company_name
     46FROM
     47    Invoice i
     48JOIN Client cl ON i.client_id = cl.client_id
     49JOIN Company c ON i.company_id = c.company_id
     50WHERE
     51    i.due_date < NOW() AND i.status != 'Paid'
     52ORDER BY
     53    i.due_date ASC;
     54}}}
     55
     56**4. Report: Clients with the Highest Invoice Payments**
     57{{{
     58SELECT
     59    cl.client_id,
     60    cl.name AS client_name,
     61    SUM(i.total_amount) AS total_paid
     62FROM
     63    Client cl
     64JOIN Invoice i ON cl.client_id = i.client_id
     65WHERE
     66    i.status = 'Paid'
     67GROUP BY
     68    cl.client_id, cl.name
     69ORDER BY
     70    total_paid DESC
     71LIMIT 10;
     72}}}
     73
     74**5. Report: Outstanding Invoices by Each Client**
     75{{{
     76SELECT
     77    cl.client_id,
     78    cl.name AS client_name,
     79    COUNT(i.invoice_id) AS outstanding_invoices,
     80    SUM(i.total_amount) AS outstanding_amount
     81FROM
     82    Client cl
     83JOIN Invoice i ON cl.client_id = i.client_id
     84WHERE
     85    i.status = 'Unpaid'
     86GROUP BY
     87    cl.client_id, cl.name
     88ORDER BY
     89    outstanding_amount DESC;
     90}}}
     91
     92**6. Report: Monthly Invoice Revenue**
     93{{{
     94SELECT
     95    TO_CHAR(i.issue_date, 'YYYY-MM') AS month,
     96    SUM(i.total_amount) AS total_revenue
     97FROM
     98    Invoice i
     99GROUP BY
     100    TO_CHAR(i.issue_date, 'YYYY-MM')
     101ORDER BY
     102    month DESC;
     103}}}
     104
     105**7. Report: Top 5 Products/Services Sold by Revenue**
     106{{{
     107SELECT
     108    l.description AS product_name,
     109    SUM(l.quantity * l.unit_price) AS total_revenue
     110FROM
     111    LineItem l
     112GROUP BY
     113    l.description
     114ORDER BY
     115    total_revenue DESC
     116LIMIT 5;
     117}}}
     118
     119**8. Report: Invoices with the Most Line Items**
     120{{{
     121SELECT
     122    i.invoice_id,
     123    i.issue_date,
     124    i.total_amount,
     125    COUNT(l.line_item_id) AS line_item_count
     126FROM
     127    Invoice i
     128JOIN LineItem l ON i.invoice_id = l.invoice_id
     129GROUP BY
     130    i.invoice_id, i.issue_date, i.total_amount
     131ORDER BY
     132    line_item_count DESC
     133LIMIT 10;
     134}}}
     135
     136**9. Report: Average Time to Payment**
     137{{{
     138SELECT
     139    AVG(i.payment_date - i.issue_date) AS avg_days_to_payment
     140FROM
     141    Invoice i
     142WHERE
     143    i.status = 'Paid';
     144}}}
     145
     146**10. Report: Invoices with Discounts Applied**
     147{{{
     148SELECT
     149    i.invoice_id,
     150    i.issue_date,
     151    i.total_amount,
     152    i.discount_percentage,
     153    (i.total_amount * i.discount_percentage / 100) AS discount_amount
     154FROM
     155    Invoice i
     156WHERE
     157    i.discount_percentage > 0
     158ORDER BY
     159    discount_amount DESC;
     160}}}