SQL query on emp table(SCOTT Schema): Highest salary per department

From emp table of SCOTT schema. I would like to know the name, sal,the deptno he belongs of the highest paid employee from each dept.
Explaining further:
The following query only returns deptno and max(sal) of each department. I need the name of the highest paid employee from each dept along with the below result.
SQL> SELECT DEPTNO,MAX(SAL) FROM EMP GROUP BY deptno;
DEPTNO MAX(SAL)
30 2850
20 3000
10 5000

It seems you want just one ename if two employees have the same highest salary. In that case you can use this construct:
SQL> select deptno
  2       , max(sal)
  3       , max(ename) keep (dense_rank last order by sal)
  4    from emp
  5   group by deptno
  6  /
    DEPTNO   MAX(SAL) MAX(ENAME)
        10       5000 KING
        20       3000 SCOTT
        30       2850 BLAKE
3 rijen zijn geselecteerd.Regards,
Rob.

Similar Messages

  • Sql query on emp table

    SQL> select * from emp;
    EMPNO EMPNAME SAL empd
    1 DJ 2800 26-MAR-06
    2 VJ 9800 12-APR-00
    2 VJ 7800 27-MAR-06
    1 DJ 8800 27-MAR-06
    The output i am expecting is as follows, I need to find the max sal, min
    sal ,max saldate, min saldate of each employee.
    Empname SAL(maxsal) empd(Maxsal date) Sal(minsal) empd(minsaldate Avg(sal)
    DJ 8800 27-Mar-06 2800 26-MAR-06 5800
    VJ 9800 12-APR-06 7800 27-MAR-06 8800
    Please help me to get the above output using sql query. I am sure this can be achieved using plsql, But my requirement is to achieve this using sqlquery.
    Please reply.
    Thanks,
    Danes

    SQL> select 1 empno, 'DJ' ename, 2800 sal, to_date('26-MAR-06','dd-mon-rr') empd from dual
      2  union all
      3  select 1, 'DJ', 8800, to_date('11-APR-06', 'dd-mon-rr') from dual
      4  union all
      5  select 1, 'DJ', 8900, to_date('14-MAY-05', 'dd-mon-rr') from dual
      6  union all
      7  select 1, 'DJ', 2200, to_date('15-MAY-05', 'dd-mon-rr') from dual
      8  union all
      9  select 2, 'VJ', 9800, to_date('12-APR-06', 'dd-mon-rr') from dual
    10  union all
    11  select 2, 'VJ', 7800, to_date('27-MAR-06', 'dd-mon-rr') from dual
    12  union all
    13  select 2, 'VJ', 7200, to_date('28-MAR-06', 'dd-mon-rr') from dual
    14  /
         EMPNO EN        SAL EMPD
             1 DJ       2800 26-MAR-06
             1 DJ       8800 11-APR-06
             1 DJ       8900 14-MAY-05
             1 DJ       2200 15-MAY-05
             2 VJ       9800 12-APR-06
             2 VJ       7800 27-MAR-06
             2 VJ       7200 28-MAR-06
    7 rows selected.
    SQL> select empno, ename,
      2  max(sal) keep (DENSE_RANK FIRST ORDER BY sal desc) max_sal,
      3  max(empd) keep (DENSE_RANK FIRST ORDER BY sal desc) max_date,
      4  min(sal) keep (DENSE_RANK LAST ORDER BY sal desc) min_sal,
      5  min(empd) keep (DENSE_RANK LAST ORDER BY sal desc) min_date
      6  from (
      7  select 1 empno, 'DJ' ename, 2800 sal, to_date('26-MAR-06','dd-mon-rr') empd from dual
      8  union all
      9  select 1, 'DJ', 8800, to_date('11-APR-06', 'dd-mon-rr') from dual
    10  union all
    11  select 1, 'DJ', 8900, to_date('14-MAY-05', 'dd-mon-rr') from dual
    12  union all
    13  select 1, 'DJ', 2200, to_date('15-MAY-05', 'dd-mon-rr') from dual
    14  union all
    15  select 2, 'VJ', 9800, to_date('12-APR-06', 'dd-mon-rr') from dual
    16  union all
    17  select 2, 'VJ', 7800, to_date('27-MAR-06', 'dd-mon-rr') from dual
    18  union all
    19  select 2, 'VJ', 7200, to_date('28-MAR-06', 'dd-mon-rr') from dual
    20  )
    21  group by empno, ename
    22  /
         EMPNO EN    MAX_SAL MAX_DATE     MIN_SAL MIN_DATE
             1 DJ       8900 14-MAY-05       2200 15-MAY-05
             2 VJ       9800 12-APR-06       7200 28-MAR-06Rgds.

  • Finding the Text of SQL Query causing Full Table Scans

    Hi,
    does anyone have a sql script, that shows the complete sql text of queries that have caused a full table scan?
    Please also let me know as to how soon this script needs to be run, in the sense does it work only while the query is running or would it work once it completes (if so is there a valid duration, such as until next restart, etc.)
    Your help is appreciated.
    Thx,
    Mayuran

    Finding the Text of SQL Query Causing Full Table Scan

  • Can't  write right sql query by two tables

    Hello
    Everyone,
    I am trying to get a sql query by two tables,
    table:container
    <pre class="jive-pre">
    from_dest_id     number
    ship_from_desc     varchar
    to_dest_id     number
    </pre>
    table: label_fromat (changeless)
    <pre class="jive-pre">
    SORT_ORDER     number
    PREFIX     varchar2
    VARIABLE_NAME varchar2
    SUFFIX varchar2
    LF_COMMENT varchar2
    </pre>
    the sql which i need is
    a. table CONTAINER 's each column should have LABLE_FORMAT 's PREFIX before and SUFFIX back ,and these columns is connected
    example : the query output should be like this :
    <pre class="jive-pre">
    PREFIX||from_dest_id||SUFFIX ||PREFIX||ship_from_desc||SUFFIX ||PREFIX|| to_dest_id||SUFFIX
    </pre>
    every PREFIX and SUFFIX are come from LABEL_FORMAT's column VARIABLE_NAME (they are different)
    column SORT_ORDER decide the sequence, for the example above: Column from_dest_id order is 1, ship_from_desc is 2,to_dest_id is 3
    b. table LABEL_FORMAT's column VARIABLE_NAME have values ('from_dest_id','ship_from_desc','to_dest_id')
    If table CONTAINER only have one record i can do it myself,
    But actually it is more than one record,I do not know how to do
    May be this should be used PL/SQL,or a Function ,Cursor ,Procedure
    I am not good at these
    Any tips will be very helpful for me
    Thanks
    Saven

    Hi, Saven,
    Presenting data from multiple rows as a single string is called String Aggregation . This page:
    http://www.oracle-base.com/articles/10g/StringAggregationTechniques.php
    shows many ways to do it, suited to different requirements, and different versions of Oracle.
    In Oracle 10 (and up) you can do this:
    SELECT     REPLACE ( SYS_CONNECT_BY_PATH ( f.prefix || ' '
                                   || CASE  f.variable_name
                                        WHEN 'FROM_DEST_ID'
                                       THEN  from_dest_id
                                       WHEN 'SHIP_FROM_DESC'
                                       THEN  ship_from_desc
                                       WHEN 'TO_DEST_ID'
                                       THEN  to_dest_id
                                      END
                                   || ' '
                                   || f.suffix
                               , '~?'
              , '~?'
              )     AS output_txt
    FROM          container     c
    CROSS JOIN     label_format     f
    WHERE          CONNECT_BY_ISLEAF     = 1
    START WITH     f.sort_order     = 1
    CONNECT BY     f.sort_order     = PRIOR f.sort_order + 1
         AND     c.from_dest_id     = PRIOR c.from_dest_id
    saven wrote:If table CONTAINER only have one record i can do it myself,
    But actually it is more than one record,I do not know how to do In that case, why did you post an example that only has one row in container?
    The query above assumes
    something in container (I used from_dest_id in the example above) is unique,
    you don't mind having a space after prefix and before from_dest_id,
    you want one row of output for every row in container, and
    you can identify some string ('~?' in the example above) that never occurs in the concatenated data.

  • Using sql query as a table name

    hello,
    I have a table(say table1) which is storing the names of some other tables. I want to access the name of a table from table1 using sql query and then use the result of this query as the table name to access the data from
    retrieved table name. How can I do this ?
    ex:
    select * from (select tablename from table1 where tableid='1');
    I want to do something likw this. How can I do this?

    I want to access the name of a table from table1 using sql query and then use the result of this query as the table name to access the data from retrieved table name. How can I do this ?e.g. like this:
    SQL> with table1 as (
    select 'emp' tablename from dual
    select extractvalue(x.column_value, 'ROW/ENAME') ename
    from table1, xmltable('ROWSET/ROW' passing dbms_xmlgen.getxmltype('select * from ' || tablename)) x
    ENAME                                                                                                                       
    SMITH                                                                                                                       
    ALLEN                                                                                                                       
    WARD                                                                                                                        
    JONES                                                                                                                       
    MARTIN                                                                                                                      
    BLAKE                                                                                                                       
    CLARK                                                                                                                       
    SCOTT                                                                                                                       
    KING                                                                                                                        
    TURNER                                                                                                                      
    ADAMS                                                                                                                       
    JAMES                                                                                                                       
    FORD                                                                                                                        
    MILLER                                                                                                                      
    14 rows selected.

  • SQL Query Template to a different schema

    Hi all
    I am on MII 12.2, connecting to Oracle through a data source which references user/schema "Foo"
    I would like to perform queries involving tables from schema "Bar" .
    As a consequence, when I need to access Bar tables I must reference them like "Foo.<TableName>"
    If I use an SQL query with mode Command I can freely write the prefix but no return is allowed
    If I use mode = FixedQuery(With Output) I can't prefix "Foo." because the editor prevents me from freely entering SQL code
    How can I do this? Thanks regards
    Vincenzo

    Thanks for your reply!
    Actually there is a primary key, but Streams seems to ignore it. I've also tried the SET_KEY_COLUMNS way plus supplementary logging on the source DB, but this didn't help at all. I think this is happenening because the tables are not in the TEST_HQ schema, there are only synonyms to the real tables contained in TEST_CO.
    Is there any other easy way to get Streams working between two different schemas?
    Thanks again for your help!!
    Max

  • Select query on emp table

    Hi,
    How to find display the o/p like manager name under dependent employess same like parent child relation ship on noraml emp table:
    sample o/p:
    name job
    xx manger
    yy sales
    yy1 sales
    aa manager
    rr marketing
    rr1 marketing
    Thanks

    921306 wrote:
    so like this i need parent child relationship between the manager under employees....So join the parent entity with the child entity to create the parent-child relationship.
    As both entities are in the same table, this means joining the table to itself. E.g.
    SQL> select
      2          child.ename                     as CHILD,
      3          child.job                       as CHILD_JOB,
      4          nvl(parent.ename,'<none>')      as PARENT,
      5          parent.job                      as PARENT_JOB
      6  from emp parent,
      7       emp child
      8  where child.mgr = parent.empno (+)
      9  /
    CHILD      CHILD_JOB PARENT     PARENT_JO
    FORD       ANALYST   JONES      MANAGER
    SCOTT      ANALYST   JONES      MANAGER
    JAMES      CLERK     BLAKE      MANAGER
    TURNER     SALESMAN  BLAKE      MANAGER
    MARTIN     SALESMAN  BLAKE      MANAGER
    WARD       SALESMAN  BLAKE      MANAGER
    ALLEN      SALESMAN  BLAKE      MANAGER
    MILLER     CLERK     CLARK      MANAGER
    ADAMS      CLERK     SCOTT      ANALYST
    CLARK      MANAGER   KING       PRESIDENT
    BLAKE      MANAGER   KING       PRESIDENT
    JONES      MANAGER   KING       PRESIDENT
    SMITH      CLERK     FORD       ANALYST
    KING       PRESIDENT <none>
    14 rows selected.
    SQL> The basic concept is easy - define the parent entity, define the child entity, join the parent to the child.
    If some entities will not have parents (root entities), then an outer join is needed from the child entity to the parent entity.
    Simply because both entities are in the same table, does not change the logic or approach. It is perfectly valid to self-join a table.

  • How to get save result from EXECUTE from a dynamic SQL query in another table?

    Hi everyone, 
    I have this query:
    declare @query varchar(max) = ''
    declare @par varchar(10)
    SELECT @par = col1 FROM Set
    declare @region varchar(50)
    SELECT @region = Region FROM Customer
    declare @key int
    SELECT @key = CustomerKey FROM Customer
    SET @query = 'SELECT CustomerKey FROM Customer where ' + @par + ' = '+ @key+ ' '
    EXECUTE (@query)
    With this query I want get col1 from SET and compare it to the column Region from Customer. I would like to get the matching CustomerKey for it.
    After execution it says commands are executed successfully. But I want to save the result from @query in another table. I looked it up and most people say to use sp_executesql. I tried a few constructions as sampled and I would always get this error: 
    Msg 214, Level 16, State 2, Procedure sp_executesql, Line 12
    Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.
    So the output should be a list of CustomerKeys in another table.
    How can I save the results from EXECUTE into a variable? Then I assume I can INSERT INTO - SELECT in another table. 
    Thanks

    CREATE TABLE Customer
    (CustomerKey INT , Name NVARCHAR(100));
    GO
    INSERT dbo.Customer
    VALUES ( 1, N'Sam' )
    GO
    DECLARE @query nvarchar(max) = ''
    declare @par varchar(10) = 'Name',
    @key varchar(10) = 'Sam'
    CREATE TABLE #temp ( CustomerKey INT );
    SET @query =
    insert #temp
    SELECT CustomerKey
    FROM Customer
    where ' + @par + ' = '''+ @key+ ''' '
    PRINT @query
    EXEC sp_executesql @query
    SELECT *
    FROM #temp
    DROP TABLE #temp;
    DROP TABLE dbo.Customer
    Cheers,
    Saeid Hasani
    Database Consultant
    Please feel free to contact me at [email protected] as well as on Twitter and Facebook.
    [My Writings on TechNet Wiki] [T-SQL Blog] [Curah!]
    [Twitter] [Facebook] [Email]

  • Error while executing SQL query -' Must Specify Table to select from'

    Hi all,
    While executing query using query generator
    it shows error message
    [Microsoft][SQL Native Client][SQL Server]Must specify table to select from.
    2). [Microsoft][SQL Nativ
    SELECT T1.ItemCode, T1.Dscription AS 'Item Description', T1.Quantity, T1.Price, T1.LineTotal,
    (Select SUM(T2.TaxSum) From PCH4 T2 Where T0.DocEntry=T2.DocEntry AND T2.staType=-90 AND T1.LineNum=T2.LineNum) as 'BEDAmt',
    (Select SUM(T2.TaxSum) From PCH4 T2 Where T0.DocEntry=T2.DocEntry AND T2.staType=-60 AND T1.LineNum=T2.LineNum) as 'ECSAmt',
    (Select SUM(T2.TaxSum) From PCH4 T2 Where T0.DocEntry=T2.DocEntry AND T2.staType=7 AND T1.LineNum=T2.LineNum) as 'HECSAmt',
    (Select SUM(T2.TaxSum) From PCH4 T2 Where T0.DocEntry=T2.DocEntry AND T2.staType=1 AND T1.LineNum=T2.LineNum) as 'VATAmt',
    (Select SUM(T2.TaxSum) From PCH4 T2 Where T0.DocEntry=T2.DocEntry AND T2.staType=4 AND T1.LineNum=T2.LineNum) as 'CSTAmt'
    FROM dbo.[OPCH] T0  INNER JOIN PCH1 T1 ON T0.DocEntry = T1.DocEntry INNER JOIN PCH4 T2 ON T2.DocEntry=T0.DocEntry
    WHERE T0.DocDate >='[%0]' AND  T0.DocDate <='[%1]' AND T0.DocType = 'I'
    GROUP BY T1.ItemCode,T1.Dscription,T1.Quantity, T1.Price, T1.LineTotal,T0.DocEntry,T1.DocEntry,T1.LineNum,T2.LineNum
    It's executing fine in MS SQL Server Studio Management.
    Please give y'r ideas to solve the problem.
    Jeyakanthan

    try this, it works fine in my B1:
    SELECT T1.ItemCode, T1.Dscription AS 'Item Description', T1.Quantity, T1.Price, T1.LineTotal,
    (Select SUM(T2.TaxSum) From PCH4 T2 Where T0.DocEntry=T2.DocEntry AND T2.staType=-90 AND T1.LineNum=T2.LineNum) as 'BEDAmt',
    (Select SUM(T2.TaxSum) From PCH4 T2 Where T0.DocEntry=T2.DocEntry AND T2.staType=-60 AND T1.LineNum=T2.LineNum) as 'ECSAmt',
    (Select SUM(T2.TaxSum) From PCH4 T2 Where T0.DocEntry=T2.DocEntry AND T2.staType=7 AND T1.LineNum=T2.LineNum) as 'HECSAmt',
    (Select SUM(T2.TaxSum) From PCH4 T2 Where T0.DocEntry=T2.DocEntry AND T2.staType=1 AND T1.LineNum=T2.LineNum) as 'VATAmt',
    (Select SUM(T2.TaxSum) From PCH4 T2 Where T0.DocEntry=T2.DocEntry AND T2.staType=4 AND T1.LineNum=T2.LineNum) as 'CSTAmt'
    FROM dbo.OPCH T0  INNER JOIN PCH1 T1 ON T0.DocEntry = T1.DocEntry INNER JOIN PCH4 T2 ON T2.DocEntry=T0.DocEntry
    WHERE T0.DocDate >='[%0]' AND  T0.DocDate <='[%1]' AND T0.DocType = 'I'
    GROUP BY T1.ItemCode,T1.Dscription,T1.Quantity, T1.Price, T1.LineTotal,T0.DocEntry,T1.DocEntry,T1.LineNum,T2.LineNum
    B1 don't like brackets!
    Regards

  • Build a sql query fro different table and insert into a table

    Hi I have a requirement ,
    i have some table 1 table which holds rules which rules i have to apply on the sql query
    2 table will hold table name and column name and transformation
    with these help of 2 tables i want to build a sql quey and the sql query need to be insert into another  table.

    Hi Karthick,
    I am not going to build Dynamic Data Model.
    i already have table 1 contains rules let's say COUNT,
    and another table contain source table name , column name , Target table name, Source Table name like that
    so with the help of these 2 tables i want to build Sql query and going to insert into 3rd table.

  • Creating sql query using 3 tables

    There is database (supposed to be relational but it is not) and
    I cannot change the tables and it is very difficult to create SQL query.
    Please, help!
    First table T1
    a1 char 20
    time timestamp
    a2 char 7 (the same as t2.a2 when is trimmed)
    a3 number 5,0
    a4 number 8,4
    a5 number 7,3
    Second table T2
    a2 char 15
    b1 number 1,0
    b2 char 1,0
    b3 char 4
    a3 number 5,0
    Third table T3
    b3 char 4
    c1 char 4
    c2 number 7,3
    c3 number 8,4
    So, I need to create query (is it possible at all!?) from those 3 tables (a1, a2, b1,b2,b3, a4, a5, c2,c3
    where time is within interval (from, to), a3 in interval (1,2,3,4), t2.b3=t3.b3, t1.a2=t2.a2
    group by or sorted by a1, then, a2.
    Any suggestion is welcome!
    Thanks!
    By the way, I will use this query in Crystal Reports.

    As I already mentioned, I received another conditions for the query, and when I create a new one, I
    First table T1
    a1 number 5,0
    a2 char 7 (the same as t2.a2 when is trimmed)
    a3 number 8,4
    a4 number 7,3
    a_time timestamp
    Second table T2
    a2 char 15
    b1 number 1,0
    b2 char 1,0
    b3 char 4
    b4 char 4
    Third table T3
    c1 char 4
    c2 number 7,3
    c3 number 8,4
    b3 char 4
    where if c1='MIN' c2, c3 return min values,
    and if c1='MAX' c2,c3 return max values
    SQL query:
    select t1.a1, t1.a2, t2.b1, t2.b2, t2.b3, t1.a3, t1.a4, t3.c1,
    t3.c2, t3.c3, t2.b4
    from t1, t2, t3
    where (TRIM(t1.a2)=TRIM(t2.a2)
    and t1.a1=19
    and ((to_char(t1.a_time, 'YYYY-MM-DD') >= '2006-03-15')
    and (to_char(t1.a_time, 'YYYY-MM-DD') <= '2006-03-16')))
    and t3.b3=t2.b3)
    order by t1.a_time
    Result set:
    a1, a2, b1, b2, b3, a3, a4, c1('MAX'), c2', c3', b4
    a1, a2, b1, b2, b3, a3, a4, c1('MIN'), c2", c3", b4
    So when I executed SQL query it returns 2 rows for the same a2.
    I want to get 1 row for each a2 together with c3 (c4) min and c3 (c4) max values.
    How to name columns for c2 min and c2 max (the same for c3) in order to retreive 1 row per a2 value, something like this:
    a1, a2, b1, b2, b3, a3, a4, c2min, c2max, c3min, c3max, b4
    Thanks

  • How to return in pl/sql the tuples of an sql query comming  several tables

    I have a select query whose result comes from several tables. The question is how to return the tuples of the select query using a pl/sql function. In othe words, is it possible to define a construct structure to store the values of sql query and return that construct. if yes how to define such a construct where its elements comming from several tables.
    I appreciate very much ur help

    The way to return a resultset from a function is with a cursor variable. The lazy of doing this is using a weakly-typed ref cursor (in 9i use the predefined SYS_REFCURSOR).
    Cheers, APC

  • Get column names into a VB program, for an SQL query that joins tables

    use [mydatabase]
    select * from InvNum inum
    left join _btblInvoiceLines ilin
    on inum.autoindex = ilin.iinvoiceid
    left join stkitem s
    on ilin.istockcodeid = s.stocklink where InvNumber = 'IVQ0834' or InvNumber = 'IVQ0835'
    I need to get out the column names in a VB program in the same order they would appear in the SQL query above...
    I want to use something like:
    select column_name from information_schema.columns where TABLE_NAME = ....
    except there are several tables involved above so I dont know the format!

    If you execute the query in your program using the SqlDataReader.ExecuteReader method, the column names will be available via the GetName method of the returned reader.  But note that your query may return multiple columns with the same name.
    Dim reader As SqlDataReader = command.ExecuteReader()
    For x = 0 To reader.FieldCount - 1
    Console.WriteLine(reader.GetName(x))
    Next x
    Dan Guzman, SQL Server MVP, http://www.dbdelta.com

  • SQL Query based Tree Table

    Dear All,
    I would like to know. Can I create af:TreeTable with SQL Query without using Entity Object because of the Database allow to use only Query view object. Please show to me the ways how to tackle in this scenario.
    Regards
    KT

    here some discussion going on here.
    i will suggest you the same.
    Is it possible to create a multi-level tree table based on a single VO ?

  • Sql query across multiple tables ina database

    I have 3 MS Access tables in database that are linked by keyed fields in the table.  Is there a way to fetch only certain records that match a criteria across all three of these tables using the database connectivity toolset VIs?

    Thanks.  I am trying to mechanize/run an SQL query like this 
    SELECT Code_Type.Code_NUM, Code_Type.Code_Word, Word_Type.Parm_Label, Word_Type.Word_Sequence, Word_Type.Num_Words, Parameter_Label.Parm_Label, Parameter_Label.Parm_Name, Parameter_Label.Num_Bits, Parameter_Label.Num_Bits
    FROM (Code_Type INNER JOIN Word_Type ON Code_Type.Code_Word = Word_Type.Code_Word) INNER JOIN Parameter_Label ON Word_Type.Parm_Label = Parameter_Label.Parm_Label;
    while using the VIs in the database connectivity toolset.  How do I code this using these VIs?  I dont see an example of a straight SQL string like this being able to be put into the VIs.

Maybe you are looking for

  • Cannot delete file from iPod

    I use my iPod as a portable storage device for avi files, but I cannot seem to delete one of the files. There was an error when I captured this file live via firewire, so it has a filename but its size is 0kb. After going to My Computer, Drive F:, I

  • Lightroom 2 crashes need help.

    I just imported some 1DsMk3 files and after the import Lightroom 2 crashed. Now I started again and after a few seconds it crashes again. I tried different libaries but they are all crashing now. System: Windows Vista 64 3,2Ghz Intel 8GB Memory 2*150

  • Problems with installing coldfusion mx and setting up CF for home practice

    problems with installing coldfusion mx: hello, i have some books of cf. i need to start on my tutorials however, they said the prereq is mx server home site, 1. i did download mx 7 and chose mx developer edition. my problem is that when it is self co

  • Can I close the browser window when I run a form?

    Hi, I'm running forms using SeparateFrame=TRUE, but the browser windows remains in background, could I close it before exiting the form? thanks

  • What printer/fax/scanner is best from HP?

    mainly to be used as a color scanner and to print coupons.